Использование Dynamic Data совместно с Entity Framework 5

Monday, April 1, 2013 /
G+
Как известно, уже вышла релиз-версия .NET Framework 4.5, а также стала доступна для загрузки финальная версия Visual Studio 2012.

Познакомиться с новой Visual Studio я успел еще с beta версии, а после релиза начал использовать rtm релиз Visual Studio и .NET Framework 4.5 в реальной работе. В новую версию .NET Framework входит так же новая версия Entity Frameowrk. Уже пятая. Точнее она туда не совсем входит - у меня при создании проекта файлы подгружаются из репозитория NuGet. Но в любом случае в новом проекте используется именно 5 версия библиотеки.

Прежде чем продолжить, хочу вкратце рассказать, что же нового появилось в EF5 и почему я решил начать использовать эту версию.

Что нового в Entity Frameowrk 5.0

  • Значительное повышение производительности - до 67%.
  • Поддержка свойств типа enum, которая доступна для использования во всех подходах: Model, Database и Code First.
  • Поддержка пространственные типов данных с использованием DbGeography и DbGeometry типов. Они также доступны в Model, Database и Code First подходах.
  • При генерации кода редактор Visual Studio теперь будет использовать по умолчнию DbContext в качестве базового класса для новых моделей . Это означает, что любые новые модели, созданные с помощью конструктора EF будут создавать производные от DbContext и POCO классы по умолчанию. При это остается возможность вернуться к генерации кода на основе ObjectContext если это необходимо. Существующие модели не будет автоматически изменяться в поколение код DbContext.
  • Функции теперь могут возвращающать пользовательские таблицы при применении подхода Database First.
Это не полный перечень, но и эти возможности заинтересовали меня достаточно сильно. Более подробно о нововведениях можно узнать тут.

Суть задачи

Во многих своих проектах для управления данными я применяю решение созданное на основе ASP.NET Dynamic Data (о том как именно можно применять это решение, и в целом инструменты реализующие технологию скаффолдинга - я писал ранее). Как уже было сказано, в новой версии Entity Framework даже при использовании режима Database First теперь генерирует контекст на основе класса DbContext, а не ObjectContext, как было раньше. Dynamic Data предполагает же, что в качестве базового класса контекста используется именно ObjectContext.

В связи с этим, для корректной работы Dynamic Data пришлось немного изменить инициализацию контекста и работу некоторых контролов. Очень хорошую статью по этому поводу я нашел в блоге Пранава Растоги,

Думаю что эта информация пригодится тем, кто использует Dynamic Data и планирует переходить на новую версию Entity Framework.

Настройка ASP.NET Dynamic Data для взаимодействия с контекстом на основе DbContext

Для того, что бы Dynamic Data корректно работал с новым форматом необходимо сделать три простых шага.

Подробнее о том, что именно нужно сделать можно прочитать тут: http://habrahabr.ru/post/150012/.

Перейти к материалу