Тип или имя пространства имен "объекты" не существует в системе пространства имен.Данные'


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

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

тип или имя пространства имен 'объекты' не существует в пространстве имен - Система.Данные' (вы пропускаете собрание ссылка?)

также, используя систему оператора.Данные.Объекты не разрешаются по той же причине.

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

какие мысли? Спасибо!

8 89

8 ответов:

необходимо добавить ссылку на систему сборки .NET.Данные.Сущность.файл 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, вам нужно будет обновить код шаблоны генерации для создания кода, совместимого с EF6. Примечание: в настоящее время есть только EF 6.X шаблоны генератора DbContext, доступные для Visual Studio 2012 и 2013.

  1. удалить существующие шаблоны генерации кода. Эти файлы обычно называются . ttи . Context.tt и быть вложенным под вашим файлом edmx в обозревателе решений. Вы можете выбрать шаблоны в Обозреватель решений и нажмите Del ключ для их удаления.
    Примечание: в проектах веб-сайтов шаблоны не будут вложены в ваш файл edmx, но перечислены рядом с ним в обозревателе решений.
    Примечание: In VB.NET проекты вам нужно будет включить "показать все файлы", чтобы иметь возможность видеть вложенные файлы шаблонов.
  2. добавить соответствующий EF 6.X шаблон генерации кода. Откройте модель в EF Designer, щелкните правой кнопкой мыши на области конструктора и выберите Добавить Элемент Генерации Кода...
    • если вы используете DbContext API (рекомендуется), то EF 6.X генератор DbContext будет доступен под сведения tab.
      Примечание: если вы используете Visual Studio 2012, вам нужно будет установить инструменты EF 6, чтобы иметь этот шаблон. Смотрите Получить Entity Framework для подробности.
    • если вы используете OBJECTCONTEXT API, то вам нужно будет выбрать онлайн вкладка и поиск EF 6.х 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

Если вы хотите использовать систему".Данные.Объекты.EntityFunctions"

системы использовать ".Данные.Сущность.DbFunctions " в EF 6.1+

в моем случае для 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();    

конечно, ваша подпись анонимного типа может отличаться.

НТН.

Я добавил ссылку на .dll файл, для системы.Данные.В LINQ, вышесказанного было недостаточно. Вы можете найти .dll в различных каталогах для следующих версий.

необходимо добавить ссылку на систему сборки .NET.Данные.Linq