Очень кратко:
Я внедрял EF Migrations в существующий проект, созданный как Code First, на основе статьи Ладислав Мрнка
При внедрении миграции EF в проект, который уже находится в рабочей среде, как можно управлять сценариями миграции между обновлениями, применяемыми к разработке, и сценариями, созданными для рабочей среды?
Причина, по которой я сбит с толку, заключается в том, что к идентификатору MigrationId, сгенерированному для каждого скрипта, добавлена отметка времени. В моих попытках миграции я заметил, что записи, записанные в таблицах __MigrationHistory для dev и prod, были разными, что поднимает вопрос, если БД должна была пройти довольно много обновлений миграции, то если когда-либо по какой-либо причине требовалось понижение версии , Было бы очень сложно сопоставить точный MigrationId для создания скриптов с использованием update-database -script
Очень простой процесс, когда вы создаете $InitialMigration
, который создает таблицу __MigrationHistory
. Затем любые изменения в вашей модели сопровождаются любым update-database
для миграции базы данных. И этот процесс зацикливается всякий раз, когда у вас есть логически сгруппированный пакет изменений модели.
Взгляд в таблицу __MigrationHistory
показал
+------------------------------------+-------------------------+------------------------------------------------------------------+----------------+
| MigrationId | CreatedOn | Model | ProductVersion |
+------------------------------------+-------------------------+------------------------------------------------------------------+----------------+
| 000000000000000_BootstrapMigration | 2012-03-01 17:40:39.567 | 0x1F8B08000000400ECBD07601C49...HASH_TRUNCATED...CA7F54A20F50000 | 4.3.1 |
| 201203011745335_AutomaticMigration | 2012-03-01 17:45:33.557 | 0x1F8B08000000400ECBD07601C49...HASH_TRUNCATED...F4AE3681EF50000 | 4.3.1 |
+------------------------------------+-------------------------+------------------------------------------------------------------+----------------+
update-database
, чтобы создать таблицу миграции с записью 00_bootstrap. Теперь я изменил модель и запустилUpdate-Database -Script
для создания скрипта для рабочей БД, а затемUpdate-Database
для переноса Dev DB. Теперь выполнение sql, сгенерированного на предыдущем шаге в БД Prod, создает запись в таблице MigrationsHistory какTIMESTAMP01_AutomaticMigration
, тогда как более поздняя команда в БД Dev вставила запись в БД Dev с другой меткой времени, поскольку 2 команды были запущены несколько раз. мгновения друг от друга. - person bPratik   schedule 06.03.2012