Тип или имя пространства имен "Objects" не существует в пространстве имен "System.Data"

StackOverflow https://stackoverflow.com/questions/1275043

Вопрос

Я использую entities, C # и SQL Server для создания n-уровневого приложения.Я создаю несколько базовых классов, общих для всех моих компонентов DAL.В этом базовом классе я хочу обрабатывать состояние соединения базового класса ObjectContext, унаследованного entities object.

Компиляция выдает следующую ошибку:

Тип или имя пространства имен "Objects" не существует в пространстве имен "System.Data" (вам не хватает ссылки на сборку?)

Кроме того, оператор using System.Data.Objects не разрешается по той же причине.

Я попытался добавить сборку в качестве ссылки, но не смог найти ее на вкладке .NET ссылок на сборки.

Есть какие-нибудь мысли?Спасибо!

Это было полезно?

Решение

Вам необходимо добавить ссылку на сборку .NET System.Data.Entity.dll .

Другие советы

Если вы используете Entity Framework 6, пространство имен изменилось.Вы хотите использовать

System.Data.Entity.Core.Objects.ObjectQuery

Некоторое время назад обновился с EF5 на EF6 nuget и продолжал сталкиваться с этой проблемой.Я бы временно исправил это, обновив сгенерированный код до ссылочного System.Data.Entity.Core.Objects, но после генерации он будет изменен снова (как и ожидалось с момента его создания).

Это решило проблему навсегда:

http://msdn.microsoft.com/en-us/data/upgradeef6

Если у вас есть какие-либо модели, созданные с помощью EF Designer, вам необходимо будет обновить шаблоны генерации кода, чтобы сгенерировать код, совместимый с EF6. Примечание: В настоящее время доступны только шаблоны EF 6.x DbContext Generator для Visual Studio 2012 и 2013.

  1. Удалите существующие шаблоны генерации кода.Эти файлы обычно будут иметь имена <edmx_file_name>.тт и <edmx_file_name>.Context.tt и быть вложенным в ваш edmx-файл в Solution Explorer.Вы можете выбрать шаблоны в Обозревателе решений и нажать кнопку Del нажмите, чтобы удалить их.
    Примечание: В проектах веб-сайтов шаблоны не будут вложены в ваш edmx-файл, а будут перечислены рядом с ним в обозревателе решений.
    Примечание: В VB.NET проектах вам нужно будет включить "Показывать все файлы", чтобы иметь возможность просматривать вложенные файлы шаблонов.
  2. Добавьте соответствующий шаблон генерации кода EF 6.x.Откройте свою модель в EF Designer, щелкните правой кнопкой мыши на поверхности дизайна и выберите Добавьте элемент генерации кода...
    • Если вы используете DbContext API (рекомендуется), то Генератор DbContext EF 6.x будет доступен в разделе Данные вкладка.
      Примечание: Если вы используете Visual Studio 2012, вам нужно будет установить инструменты EF 6, чтобы иметь этот шаблон.Видишь Получить Entity Framework за подробностями.
    • Если вы используете ObjectContext API, то вам нужно будет выбрать В сети вкладка и поиск Генератор объектов EF 6.x EntityObject.
  3. Если вы применили какие-либо настройки к шаблонам генерации кода, вам нужно будет повторно применить их к обновленным шаблонам.

Та же проблема в 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 в различных каталогах для следующих версий.

Система.Данные.Linq C:\Program Файлы (x86)\Ссылка Assemblies\Microsoft\Framework\v3.5\System.Data.Linq.dll 3.5.0.0

Система.Данные.Linq C:\Program Файлы (x86)\Ссылочные сборки\Microsoft\Framework.NETFramework\v4.0\Profile\Client\System.Data.Linq.dll 4.0.0.0

Вам необходимо добавить ссылку на .СЕТЕВУЮ сборку System.Data.Linq

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top