У меня есть приложение MVC4, которое я недавно обновил до Entity Framework 5, и я пытаюсь переместить нашу базу данных на использование миграции из стиля разработки отбрасывания и создания каждого прогона.Entity Framework 5 Миграции: настройка начальной миграции и одиночное семя базы данных
Вот что я сделал в своей функции запуска приложения.
protected void Application_Start()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion< MyContext, Configuration >());
...
}
я выполнил команду Enable-Migrations
над проектом репозиториев, и я подумал, что это создаст исходный файл миграции однако единственный файл, он создан был Configuration
При удалении базы данных, он создает ее, как ожидается, через сначала код и семена базы данных из файла конфигурации. В конфигурационном файле я изменил все Add()
функции AddOrUpdate()
Однако запускает функцию семян в моем Configuration
файл каждый раз при запуске веб-сайта и дублирует все данные семенных снова и снова.
я представлял себе, что это создаст initial migration
файл в блоге я прочитал, что было бы, и я мог бы поместить данные в семенных там, но это не
Может кто-нибудь объяснить, как я должен быть создание БД в коде, чтобы он только семена раз?
LINK: The migrations blog post I followed
Хотя это довольно интересно для использования EF migrate.exe Я с тех пор перешел на использование roundhouse для выполнения миграции. Я по-прежнему использую EF для выравнивания моих миграций на основе моделей, но я написал небольшое консольное приложение, чтобы записать миграции в файлы SQL. Затем я использую roundhouse для выполнения самих миграций через мои скрипты сборки rake. Есть немного больше процесса, но он намного более стабилен, чем использование EF для выполнения миграции на лету, когда приложение запускается.
Я предполагаю, что он запускается каждый раз, потому что это единственный способ, которым они могли бы это сделать, без фактического внедрения посева в фактическую миграцию. Если ваш исходный код находился внутри Up() миграции, он будет запускаться только один раз, и это более интуитивно для меня, так как обычно вы делаете некоторые изменения в db и хотите засеять некоторые данные в эту новую часть схемы. – FRoZeN
If у вас нет никаких миграций, ваш метод семени никогда не будет запущен с использованием этого метода. Я тоже сейчас предпочитаю делать посев в процессе миграции - таким образом, я знаю, что он будет запускаться только один раз. – oldwizard
Hi pcguru. Фактически у вас всегда есть миграция, поскольку исходная база данных считается переносом, т. Е. Она переносится из базы данных без наличия базы данных. Однако я могу видеть преимущество наличия семян в миграции. –