У меня есть приложение MVC4, которое я недавно обновил до Entity Framework 5, и я пытаюсь перенести нашу базу данных на использование миграции из стиля разработки при отбрасывании и создании каждого прогона.
Вот что я сделал в своей функции запуска приложения.
protected void Application_Start()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion< MyContext, Configuration >() );
...
}
Я запустил команду Enable-Migrations
в моем проекте репозиториев, и я подумал, что это создаст исходный файл миграции, но единственный файл, который он создал, был Configuration
Когда я удаляю базу данных, она сначала создает ее, как и ожидалось, с помощью кода, и семена базы данных из файла конфигурации. В файле конфигурации я изменил все функции Add()
на AddOrUpdate()
Однако он запускает функцию seed в моем файле Configuration
при каждом запуске веб-сайта и повторяет все семенные данные снова и снова.
Я представил себе, что он создаст файл initial migration
, так как блог, который я прочитал, предположил, что он будет, и я мог бы разместить семенные данные там, но он не
Может кто-нибудь объяснить, как я должен настраивать БД в коде, чтобы он только семя один раз?
LINK: сообщение блога о миграции, которое я выполнил
Хотя это довольно интересно для использования EF migrate.exe, я с тех пор перешел на использование roundhouse для запуска миграции. Я по-прежнему использую EF для выравнивания моих миграций на основе моделей, но я написал небольшое консольное приложение, чтобы записать миграции в файлы SQL. Затем я использую roundhouse для выполнения самих миграций через мои скрипты сборки rake. Там немного больше процесса, но он гораздо более стабилен, чем использование EF для выполнения миграции "на лету" при запуске приложения.