Ответ 1
Поскольку ваша производственная база данных была создана с помощью EF 4.1, вам нужно будет немного поработать, чтобы подготовить ее к использованию Migrations. Начните с копии текущего производственного кода, работающего в dev environmentemnt. Убедитесь, что база данных dev не существует.
-
Обновите проект, чтобы использовать EF 4.3 (или более поздняя версия) с помощью Migrations и создайте первоначальную миграцию на моментальный снимок, что сейчас выглядит в настоящее время.
Update-Package EntityFramework Enable-Migrations Add-Migration InitialCreate
-
Замените инициализаторы базы данных на соответствующий код миграции.
Для данных семени добавьте его в метод
Seed()
файлаMigrations\Configuration.cs
. Обратите внимание, что в отличие от методаSeed()
в инициализаторах этот метод запускается каждый раз, когда вызываетсяUpdate-Database
. Возможно, потребуется обновить строки (reset исходные данные) вместо их вставки. Этот способ может помочьAddOrUpdate()
.Поскольку ваши уникальные имена теперь могут быть созданы с помощью Migrations, вы должны добавить их в метод
Up()
миграции InitialCreate. Вы можете либо связать их с вызовамиCreateTable()
, используя методIndex()
, либо вызвавCreateIndex()
.Теперь вы можете использовать инициализатор MigrateDatabaseToLatestVersion, чтобы запустить Миграции во время инициализации.
-
Получите script, чтобы загрузить исходную среду.
Update-Database -Script
Из созданного script, вы хотите удалить почти все, так как существуют таблицы. Необходимые части - это инструкции
CREATE TABLE [__MigrationHistory]
иINSERT INTO [__MigrationHistory]
. -
По желанию, отбросьте таблицу
EdmMetadata
, так как она больше не нужна.
Как только вы это сделаете, вы должны быть добры, чтобы пойти с мигрантами. Новые разработчики могут запускать Update-Database
для создания базы данных с нуля, и вы можете запустить Update-Database
(или использовать инициализатор миграции) против производства, чтобы применить туда дополнительные миграции.