Программное преобразование данных в EF5 Code Первая миграция

Можно ли выполнять какие-либо программные преобразования данных в миграциях Code First First Entity Framework 5?

Существует метод Sql() для выполнения запросов, но он имеет тип возврата void, и я не вижу способа получить результаты запросов, которые я выполняю.

пример

У меня есть таблица рецептов с отношением один-ко-многим к ингредиенту. По разным причинам я хочу преобразовать это в строковое свойство JSON Ingredients. Единственный подход, который я могу придумать, это что-то вроде этого:

  • Создать новую колонку IngredientsJson
  • Для каждого рецепта запросите его ингредиенты, программно создайте строку JSON и вставьте в новый столбец.
  • Брось старый стол Ингредиент.

1 ответ

Вы должны использовать db 'initializer' для того, что вы хотите - и / или 'Seed' в некотором роде (относительно того, где вводить в поток EF).

Вы можете > взглянуть на этот пост с настроенным <;;initializer - что исполняет и Db Create... и Migrate. Это не метод "вырезать и вставить", но в основном работает (это было быстрое решение проблемы, вам нужно немного отрегулировать, ниже приведены несколько исправлений).

MigrateDatabaseToLatestVersion доза только часть миграции - и вам нужно seed- разоблачение - или ручное завершение этой части (главное в "проверках", проводимых для разных ситуаций - то есть, когда "вовлекаться" в миграцию - или посев).

Миграция должна идти в первую очередь, и db 'creation' не имеет особого смысла, за исключением посева.

Вы переопределяете Seed (вы создали), чтобы поместить любую обработку БД там - у вас есть DbContext выставлено - и вы также можете позвонить SqlQuery если нужно.


Как создать инициализатор для создания и переноса базы данных mysql?

Другие вопросы по тегам