我有點失落,我應該如何讓實體框架與自動遷移一起工作。我想:MVC3代碼優先:遷移並生成數據庫
- 數據庫的時候它不存在
- 的數據庫中自動創建的自動更新,當模型改變
對於我使用DbMigrator後者。這是相當緩慢的,所以我不希望運行它的每一個要求,也是我在同一應用程序的多個數據庫,所以它不能在的Application_Start走這就是爲什麼我把它在在session_start這樣的:
if (Session["started"] == null)
{
// this takes care of any database updates that might be necessary.
MigrationConfiguration configuration = new MigrationConfiguration();
DbMigrator migrator = new DbMigrator(configuration);
List<string> pm = migrator.GetPendingMigrations().ToList();
if (pm.Count > 0)
{
migrator.Update();
}
}
else
{
Session["started"] = "started";
}
不知道這是否是正確的方式來執行它,但它似乎工作,但它不存在時實際上生成數據庫。它給了我一個「無法打開數據庫‘我有分貝
’由登錄請求」這與以下前的工作:
Database.SetInitializer<DbContext>(new InitializerIfModelChange());
這降低了數據庫,並生成種子數據是罰款當數據庫不存在,但它也是數據庫更改時觸發器(在這種情況下,我想DbMigrator來處理它)這是在Application_Start之前,但我不知道如何處理它。我擔心它會與DbMigrator衝突。我如何設定這一切,以實現前面描述的兩件事情?