Подтвердить что ты не робот

Зачем использовать DbContext, а не ObjectContext

Я использую EF 4.1 и используя первый подход DB. Я также создал файл .edmx. Теперь я хочу создать классы POCO.

Для этого я установил EF 4.x DbContext Generator, а также EF 4.x POCO Entity Generator из NuGet.

Я полностью понимаю, что рекомендуется использовать DbContext для EF 4.1+, поскольку он получен из ObjectContext. Тем не менее, я все еще сгенерировал свои классы POCO с помощью первого поколения с помощью EF 4.x POCO Entity Generator, а затем также EF 4.x DbContext Generator.

РЕДАКТИРОВАТЬ: Обнаружено это ADO.NET DbContext Generator и ADO.NET Poco Entity Generator (ObjectContext)

В любом случае он генерирует файлы .Context.tt и Model.tt. Так в чем же разница в файлах, сгенерированных одним из инструментов? Почему рекомендуется использовать DbContext для EF 4.1+?

Я также хотел бы знать ограничения ObjectContext.

4b9b3361

Ответ 1

DbContext - это новейший API, который должен оттачивать разработчиков при использовании наиболее распространенных задач - просто API лучше разработан, но вам все равно нужно получить ObjectContext от DbContext и использовать старый API, если вы хотите использовать более сложные функции. Если вы планируете обновить EF до 5.x или 6.x в будущем, это будет проще с DbContext, потому что это то, что рекомендует команда ADO.NET.

В терминах генераторов Генератор EF 4.x POCO создает более сложные классы, которые внутренне используют отношения. Эта функция оказалась весьма неэффективной при использовании вместе с ленивой загрузкой, поэтому новый генератор EF DbContext не использует ее.

Боковое примечание: переход кода от одного API к другому полностью поддерживается:

  • Вы можете использовать конструктор DbContext, принимающий ObjectContext, чтобы перейти от ObjectContext API к API DbContext
  • Вы можете использовать адаптер IObjectContext для перехода от DbContext API к API ObjectContext