Лучший отвечающий
Метод GetObjectByKey

Вопрос
-
http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.getobjectbykey(v=vs.110).aspx Не появляется у меня этот метод после точки, в чём может быть проблема? Всё сделано по аналогии с примером...25 февраля 2014 г. 18:59
Ответы
-
рекомендую начать с CodeFirst, очень просто
1. создали класс с нужными полями которые окажутся полями в таблице
2. создали контекст и прикрутили созданный класс
3. запустили
P.S. EF настолько умён что создаст базу за вас, и без строки подключения(автогенерация), вам только остаётся добавить данные и работать через linq
- Помечено в качестве ответа nnn93 7 марта 2014 г. 6:54
6 марта 2014 г. 17:15
Все ответы
-
Вам компилятор сказал, что метод отсутствует, или редактор? Редактор иногда ошибается, можно не обращать внимания :) А, вообще, в статье, ссылку на которую Вы привели, сказано, что такой метод есть в версии .net 3.5 sp1 или выше. А ваш проект для какой?
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
25 февраля 2014 г. 20:00 -
4.5 у меня, ну его в списке методов нету, я даже и не стал компилировать с ошибкой. Есть только GetValidationErrors и всё... Да и компилятор ошибку выдаёт
Error 1 'BGG.BGEntities' does not contain a definition for 'GetObjectByKey' and no extension method 'GetObjectByKey' accepting a first argument of type 'BGG.BGEntities' could be found (are you missing a using directive or an assembly reference?)
- Изменено nnn93 26 февраля 2014 г. 10:33
26 февраля 2014 г. 10:29 -
У класса ObjectContext вообще нет метода GetValidationErrors. Вы, может быть, не к тому типу привели свой объект?
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
26 февраля 2014 г. 12:38 -
может не тот System.Data.Entity.dll подключили, иногда их бывают несколько, из за PublicKeyToken26 февраля 2014 г. 13:53
-
Вы вот скинули мне ссылку и там есть метод addobject, я как то не мог найти его тоже, но оказывается вместо него есть просто add. Может я вообще не правильно что то делаю? Ну у меня есть модель edmx сущностей, создаю новую сущность и потом с ней операции провожу. Мне нужно обновить запись в базе данных, может это делается другим образом?
Вот так добавляется без проблем :
using System;
using System.Collections.Generic;
using System.Data.Entity.Core;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.Objects;
using System.Data.Entity;using (BGEntities BG = new BGEntities()) { { BG.Sklad.Add(new Sklad() { ProductID = 1, Number = 2 }); BG.SaveChanges(); } }
- Изменено nnn93 26 февраля 2014 г. 17:29
26 февраля 2014 г. 17:21 -
у меня одна только вроде в списке общем )26 февраля 2014 г. 17:22
-
У меня ощущение, что мы говорим на разных языках :) Какого типа это Ваше "BGEntities"? Чтобы у него появились нужные Вам методы, оно должно быть хотя бы наследником ObjectContext!
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Предложено в качестве ответа Medet Tleukabiluly 27 февраля 2014 г. 3:04
26 февраля 2014 г. 21:00 -
У меня ощущение, что мы говорим на разных языках :) Какого типа это Ваше "BGEntities"? Чтобы у него появились нужные Вам методы, оно должно быть хотя бы наследником ObjectContext!
An unhandled exception of type 'System.Data.ProviderIncompatibleException' occurred in System.Data.Entity.dll Additional information: Поставщик не возвратил экземпляр ProviderManifest.
Возникает здесь:Sklad toupd = (Sklad)BGG.GetObjectByKey(key);
BGG - это objectcontext, когда создавал её в connectionstring написал имя как в app.config- Изменено nnn93 27 февраля 2014 г. 8:44
27 февраля 2014 г. 8:43 -
в connectionString ещё допишите драйвер(провайдер), например System.Data.SqlClient для MS Sql Server или тот который нужен.
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 3 марта 2014 г. 9:20
- Снята пометка об ответе nnn93 4 марта 2014 г. 15:49
27 февраля 2014 г. 16:41 -
в connectionString ещё допишите драйвер(провайдер), например System.Data.SqlClient для MS Sql Server или тот который нужен.
using (ObjectContext BGG = new ObjectContext("Name=BGEntities")) { ... }
да вроде было прописано
<connectionStrings> <add name="BGEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string="data source=NIK;initial catalog=BG;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
3 марта 2014 г. 18:06 -
а вот так прописано у меня
<add name="MovieDBContextConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
как видите тут все просто, и все работает.
тэг name использую в DbContext, тэг connectionString - сама строка подключения, где DataSource это SQL сервер, (LocalDB)v11.0 - означает MS SQL Server Express 2012, который входит в состав Visual Studio 2012, тэг AttachDbFilename - означает что у меня есть база(если вы используете например чью то базу, в интернете куча бесплатных баз данных), или что базу нужно создать, и она портативная, и находится в той же директории что и приложение, могу легко вместе с приложением отправлять по почте например, тэг Integrated Security=True означает что используются логин пароль от windows, иногда пишут Integrated Security=SSPI, оно почти то же самое что True, тэг providerName - это драйвер.
а здесь мы его используем
using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace MvcMovie.Models { public class Movie { public int ID { get; set; } [StringLength(60, MinimumLength = 3)] public string Title { get; set; } } public class MovieDBContext : DbContext { public MovieDBContext() : base("MovieDBContextConnectionString") {} public DbSet<Movie> Movies { get; set; } } }
Судя по вопросу вы новичок в EntityFramework, рекомендую начать с нуля, использовать минимум, а дальше увеличивать конфигурации. Уберите metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;MultipleActiveResultSets=True;App=EntityFramework
- Изменено Medet Tleukabiluly 4 марта 2014 г. 17:49
4 марта 2014 г. 17:33 -
да я новичок вообще в программировании, но я по примеру делаю и я не сам прописывал connectionString, я создавал энтити модель с помощью помощника в visual studio, там спросили, добавить connectionString? я нажал галочку - добавьте. И вообще там в каждом файле созданном студией написано, что изменение его влечёт за собой неизвестные последствия, так что изменять не рекомендуется. Я поменял в app.config как вы сказали, но начала вылетать ошибка, связанная с построением этой модели... Может всё таки не в connectionString проблема? Потому что я с этой же строкой успешно добавлял информацию в базу командой add...5 марта 2014 г. 18:33
-
Вы используете подход ModelFirst, а я привёл способ CodeFirst, для них нужны разные сроки подключения (то есть доп конф)
- Изменено Medet Tleukabiluly 5 марта 2014 г. 19:30
5 марта 2014 г. 19:29 -
Ладно...6 марта 2014 г. 15:48
-
рекомендую начать с CodeFirst, очень просто
1. создали класс с нужными полями которые окажутся полями в таблице
2. создали контекст и прикрутили созданный класс
3. запустили
P.S. EF настолько умён что создаст базу за вас, и без строки подключения(автогенерация), вам только остаётся добавить данные и работать через linq
- Помечено в качестве ответа nnn93 7 марта 2014 г. 6:54
6 марта 2014 г. 17:15 -
рекомендую начать с CodeFirst, очень просто
1. создали класс с нужными полями которые окажутся полями в таблице
2. создали контекст и прикрутили созданный класс
3. запустили
P.S. EF настолько умён что создаст базу за вас, и без строки подключения(автогенерация), вам только остаётся добавить данные и работать через linq
7 марта 2014 г. 6:54