Тип или имя пространства имен "объекты" не существует в системе пространства имен.Данные'
Я использую entities, C# и SQL Server для создания n-уровневого приложения. Я создаю некоторые базовые классы, общие для всех моих компонентов даль. В этом базовом классе я хочу обрабатывать состояние соединения базового класса ObjectContext, унаследованного объектом entities.
компиляции выдает следующую ошибку:
тип или имя пространства имен 'объекты' не существует в пространстве имен - Система.Данные' (вы пропускаете собрание ссылка?)
также, используя систему оператора.Данные.Объекты не разрешаются по той же причине.
Я попытался добавить сборку в качестве ссылки, но не смог найти ее на вкладке .NET ссылок на сборки.
какие мысли? Спасибо!
8 ответов:
Если вы используете 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.
- удалить существующие шаблоны генерации кода. Эти файлы обычно называются
. tt и. Context.tt и быть вложенным под вашим файлом edmx в обозревателе решений. Вы можете выбрать шаблоны в Обозреватель решений и нажмите Del ключ для их удаления.
Примечание: в проектах веб-сайтов шаблоны не будут вложены в ваш файл edmx, но перечислены рядом с ним в обозревателе решений.
Примечание: In VB.NET проекты вам нужно будет включить "показать все файлы", чтобы иметь возможность видеть вложенные файлы шаблонов.- добавить соответствующий EF 6.X шаблон генерации кода. Откройте модель в EF Designer, щелкните правой кнопкой мыши на области конструктора и выберите Добавить Элемент Генерации Кода...
- если вы используете DbContext API (рекомендуется), то EF 6.X генератор DbContext будет доступен под сведения tab.
Примечание: если вы используете Visual Studio 2012, вам нужно будет установить инструменты EF 6, чтобы иметь этот шаблон. Смотрите Получить Entity Framework для подробности.- если вы используете OBJECTCONTEXT API, то вам нужно будет выбрать онлайн вкладка и поиск EF 6.х EntityObject генератор.
- если вы применили какие-либо настройки к шаблонам генерации кода, вам нужно будет повторно применить их к обновленным шаблонам.
та же проблема в 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();
конечно, ваша подпись анонимного типа может отличаться.
НТН.