這是一個帶有Entity Framework 6.1 Code First應用程序的ASP.NET MVC。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"
}
}
當我的應用程序啓動時,它如預期,除了作品有一件事:
如果數據庫存在,它工作的很完美,它會根據新模型更改數據庫,並使用「MIGRATION DATA」爲數據庫播種。
如果數據庫不存在,它將創建數據庫,但它只會使用「遷移數據」對數據庫進行種子處理,但不會對「創建數據」進行種子處理。沒有調用inicializer中的SEED方法。
我敢肯定有什麼我做錯了,但我想不通我怎麼可以創建數據庫時不存在,它和種子一些「初始化」的數據,它僅首次插入。
然後,當更改模型時,它只會更改數據庫並添加我在遷移種子方法中設置的數據以防萬一需要。
你能幫我解決嗎?
在此先感謝。
我明白了,謝謝。所以我怎麼做我想要的?我可以問數據庫是否存在,如果不存在,只需在創建數據庫後插入創建數據?或者有像創建數據庫一樣的事件? – 2014-11-04 12:34:05