ADO.NET DbContext Generator против ADO.NET Poco Entity Generator (ObjectContext)
Я собираюсь начать реализацию инфраструктуры доступа к данным проекта, который был спроектирован с подходом к DDD (это моя первая попытка DDD, так что будьте осторожны;-)).
Я буду использовать Entity Framework. До сих пор я изучал метод, предложенный Джули Лерман в ее замечательной книге " Программирование Entity Framework", в которой используется ADO.NET POCO Entity Generator, с некоторыми изменениями в шаблонах T4 и некоторым другим пользовательским кодом.
Сегодня я начал читать статьи по EF4.1 и ADO.NET DbContext Generator, используя подход Database First, и я пытаюсь решить, к какому из них обратиться.
Подход DbContext и EF4.1 к DDD кажется более подходящим, чем POCO Entities, но я боюсь, что это может привести к некоторым проблемам в ближайшем будущем, так как EF4.1 все еще находится в RC.
Из блога команды ADO.NET я знаю, что EF4.1 не включает в себя:
- Поддержка enum
- Поддержка пространственных типов данных
- Поддержка хранимых процедур в Code First
- Поддержка миграции в Code First
- Настраиваемые соглашения в Code First
Насколько я понимаю, поскольку я буду использовать Database First, есть меньшее количество функций, которые не были включены.
В заключение мой вопрос:
Могу ли я заменить POCO Entity Generator на EF4.1 DbContext Generator?
1 ответ
С точки зрения чистого создания объектов POCO, нет разницы между двумя генераторами. Оба генератора производят одни и те же объекты, однако ADO.NET POCO Entity Generator основан на ObjectContext
API, тогда как ADO.NET DbContext
Генератор основан на DbContext
API
API-интерфейс DbContext имеет несколько очень приятных новых функций (Local, Query on навигационное свойство и т. Д.), И API несколько упрощен, но в то же время похоже, что некоторые функции, используемые в ObjectContext API, отсутствуют в DbContext API (или, по крайней мере, имеют еще недостаточно изучен).
EF 4.1 RC - это релиз. Это означает, что вы можете создать с ним реальное приложение, потому что API не изменится в RTW (будут исправлены только ошибки). Также RTW должен быть в следующем месяце, так что я думаю, что вы не будете готовы с вашим приложением до того, как будет выпущена финальная версия.
ObjectContext
API или DbContext
API? ObjectContext
API гораздо лучше освещается в документации и блогах. Вы можете найти множество примеров об этом. Также его ограничения уже известны. DbContext
API - новая версия. Очень многообещающий релиз, в основном из-за подхода, основанного на коде. Количество постов в блогах все еще очень ограничено, нет книг, и API недостаточно проверен. Так это зависит от того, готовы ли вы бороться с новым API? Если нет то ObjectContext
API по-прежнему хороший выбор, потому что вам не нужен подход, основанный на коде.