Программное преобразование данных в 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?