Это приложение ASP.NET MVC с платформой Entity Framework 6.1 Code First.ASP.NET Entity Framework Code First Migrarion
Мне нужно мое приложение для СОЗДАНИЯ базы данных, если оно не существует и заселяет таблицы некоторыми данными. Также мне нужно перенести базу данных при запуске приложения, если модель изменилась с помощью MigrateDatabaseToLatestVersion.
На Application_Start я есть:
protected void Application_Start()
{
Database.SetInitializer(new MyAppDataInitializer());
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyAppDataContext, MyApp.Model.Migrations.Configuration>());
}
Инициализатором:
public class MyAppDataInitializer: CreateDatabaseIfNotExists<MyAppDataContext>
{
protected override void Seed(MyAppDataContext context)
{
Code to add some "CREATION DATA"
}
}
Вот класс конфигурации миграции:
public class Configuration : DbMigrationsConfiguration<MyApp.Model.DataContext.MyAppDataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
ContextKey = "MyApp.Model.DataContext.MyAppDataContext";
}
protected override void Seed(MyApp.Model.DataContext.MyAppDataContext context)
{
Code to add some "MIGRATION DATA"
}
}
Когда мое приложение запускается он работает, как ожидалось, за исключением во-первых:
Если база данных существует, она отлично работает, она изменяет базу данных в соответствии с новой моделью и заселяет базу данных с помощью «ДАННЫХ МИГРАЦИИ».
Если база данных не существует, она создает базу данных, но она только заселяет базу данных с помощью «ДАННЫХ МИГРАЦИИ», но не с «ДАННЫМИ СОЗДАНИЯ». Метод SEED на inicializer не вызывается.
Я уверен, что есть что-то я делаю неправильно, но я не могу понять, как я могу создать базу данных, если она не существует и семян некоторых «INIT» данные, которые только вставить в первый раз.
Затем при изменении модели он только изменяет базу данных и добавляет данные, которые я настраиваю в методе семян миграции, в случае необходимости.
Не могли бы вы мне помочь?
Заранее спасибо.
Вижу, спасибо. Так как я могу делать то, что хочу? Могу ли я спросить, существует ли база данных где-то, а если нет, то после ее создания вставьте данные о создании? Или есть событие, подобное созданию базы данных? –