【发布时间】:2014-11-04 09:22:27
【问题描述】:
这是一个带有 Entity Framework 6.1 Code First 应用程序的 ASP.NET MVC。
如果数据库不存在,我需要我的应用程序来创建数据库,并使用一些数据为表提供种子。如果模型已使用 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 方法没有被调用。
我确定我在这里做错了什么,但我不知道如何在数据库不存在时创建数据库并播种一些仅插入第一个的“init”数据时间。
然后在更改模型时,它只更改数据库并添加我在迁移种子方法中设置的数据,以备不时之需。
你能帮我解决这个问题吗?
提前致谢。
【问题讨论】:
标签: asp.net-mvc entity-framework-6 entity-framework-migrations