Ответ 1
Вам нужно добавить ссылку на сборку .NET System.Data.Entity.dll.
Я использую сущности, С# и SQL Server для создания n-уровневого приложения. Я создаю базовые классы, общие для всех моих компонентов DAL. В этом базовом классе я хочу обработать состояние соединения базового класса ObjectContext, унаследованного объектами объектов.
Компиляция выдает следующую ошибку:
Тип или имя пространства имен 'Objects' не существует в пространстве имен 'System.Data' (вам не хватает сборка?)
Кроме того, выражение using System.Data.Objects не разрешается по той же причине.
Я попытался добавить сборку в качестве ссылки, но не смог найти ее на вкладке .NET ссылок сборки.
Любые мысли? Спасибо!
Вам нужно добавить ссылку на сборку .NET System.Data.Entity.dll.
Если вы используете Entity Framework 6, пространство имен изменилось. Вы хотите использовать
System.Data.Entity.Core.Objects.ObjectQuery
Обновлен от EF5 до EF6 в течение некоторого времени и продолжал сталкиваться с этой проблемой. Я бы исправил исправление, обновив сгенерированный код до ссылки System.Data.Entity.Core.Objects
, но после его создания он будет снова изменен (как и ожидалось с момента его создания).
Это решило проблему навсегда:
http://msdn.microsoft.com/en-us/data/upgradeef6
Если у вас есть модели, созданные с помощью EF Designer, вам нужно будет обновить шаблоны генерации кода для генерации кода, совместимого с EF6. Примечание. В настоящее время для Visual Studio 2012 и 2013 доступны только шаблоны EF 6.x DbContext Generator.
- Удалить существующие шаблоны генерации кода. Эти файлы обычно называются < edmx_file_name > .tt и < edmx_file_name > .Context.tt и вложены в ваш файл edmx в обозревателе решений. Вы можете выбрать шаблоны в обозревателе решений и нажать клавишу Del, чтобы удалить их.
Примечание.. В проектах веб-сайта шаблоны не будут вложены в ваш файл edmx, но перечислены вместе с ним в обозревателе решений.
Примечание. В проектах VB.NET вам нужно включить "Показать все файлы", чтобы иметь возможность видеть вложенные файлы шаблонов.- Добавьте соответствующий шаблон генерации кода EF 6.x. Откройте свою модель в EF Designer, щелкните правой кнопкой мыши по поверхности дизайна и выберите Добавить элемент генерации кода....
- Если вы используете API DbContext (рекомендуется), EF 6.x DbContext Generator будет доступен на вкладке Данные. Примечание.. Если вы используете Visual Studio 2012, вам нужно будет установить EF 6 Tools для создания этого шаблона. Подробнее см. Получить структуру Entity Framework.
- Если вы используете API ObjectContext, вам нужно выбрать вкладку Онлайн и выполнить поиск EF 6.x EntityObject Generator.
- Если вы применили какие-либо настройки к шаблонам генерации кода, вам нужно будет повторно применить их к обновленным шаблонам.
Такая же проблема в VS 2013
Я добавил в Web.config:
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
Он работал как шарм.
Я нашел его на странице: http://www.programmer.bz/Home/tabid/115/asp_net_sql/281/The-type-or-namespace-name-Objects-does-not-exist-in-the-namespace-SystemData.aspx
В моем случае для EF 6+ при использовании этого:
System.Data.Entity.Core.Objects.ObjectQuery
Как часть этой команды:
var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query).ToTraceString();
Я получил эту ошибку:
Cannot cast 'query' (which has an actual type of 'System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>') to 'System.Data.Entity.Core.Objects.ObjectQuery'
Итак, мне пришлось использовать это:
var sql = ((System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>)query).ToString();
Конечно, ваша подпись анонимного типа может отличаться.
НТН.
если вы хотите использовать "System.Data.Objects.EntityFunctions"
используйте "System.Data.Entity.DbFunctions" в EF 6.1 +
Я добавил ссылку на DLL файл, для System.Data.Linq, выше было недостаточно. Вы можете найти .dll в различных каталогах для следующих версий.
System.Data.Linq C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.Linq.dll 3.5.0.0
System.Data.Linq C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\System.Data.Linq.dll 4.0.0.0
Вам нужно добавить ссылку на сборку .NET System.Data.Linq