Blog / Использование Dynamic Data совместно с Entity Framework 5
Wednesday, 22 August 2012Как известно, уже вышла релиз-версия .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/.