Является ли ObjectContext устаревшим в .NET 4.5? - программирование
Подтвердить что ты не робот

Является ли ObjectContext устаревшим в .NET 4.5?

Я использую ObjectContexts уже довольно долгое время. Теперь, когда я установил VS 2012, для моего удивления у модели данных сущности нет опции для элемента кода генерации, который создает ObjectContexts и EntityObjects вместо DbContexts и POCOs.

Неужели это устарело? Я вижу, что класс ObjectContext по-прежнему доступен, но я не могу использовать его в качестве вывода моих EDMX.

4b9b3361

Ответ 1

ObjectContext не устарел. Фактически DbContext - это всего лишь слой поверх ObjectContext. API DbContext имеет гораздо более удобный/меньший API и с ним легче работать. Кроме того, организации POCO намного чище. Это стало причиной изменения генерации кода. Если вы все еще хотите использовать объектные объекты ObjectContext и EntityObject, удалите файлы *.tt в файле *.edmx. Дважды щелкните файл edmx, чтобы открыть его в дизайнере. Нажмите на поверхность дизайнера. В свойствах изменения "Стратегия генерации кода" от "Нет" до "По умолчанию".

ИЗМЕНИТЬ

Поведение немного изменилось в дизайнере EF6, который поставляется с VS2013 (и доступен для загрузки для VS2012). Если вы используете EF5, два варианта: "T4" и "LegacyObjectContext". Если вы используете EF6, выпадающий список отключен. Если вы хотите использовать ObjectContext в приложении EF6, вам нужно использовать Генератор объектных объектов для EF6 (обратите внимание, что эта ссылка указывает только на одну версию шаблона, но на самом деле несколько версий в зависимости от того, что вам нужно - С# vs. VB.NET, WebSite не-WebSite - здесь - это список). Подробнее об изменениях в инструментах EF6 можно найти здесь.

Ответ 2

Корпорация Майкрософт рекомендует EF5.x DbContext Generator для новых проектов. Это шаблон по умолчанию в VS2012. Пользователи PreVS2012 могут найти его с помощью ExtensionManager (поиск по EF5.x) или загрузить его здесь.

Вы можете, конечно, генерировать EntityObjects и ObjectContext с помощью шаблона EF4.x EntityObject Generator, который можно найти здесь.

Как настроить вещи описано здесь.

Ответ 3

Я не уверен, как создать генератор EDMX с помощью ObjectContext, но он не устарел. DbContext используется, потому что для 99% пользователей функциональность ObjectContext не нужна.

Вы можете получить ссылку на ObjectContext от DbContext, хотя: ((IObjectContextAdapter)dbContext).ObjectContext