2017-03-22 48 views
1

我使用實體框架6繼承了ASP.NET應用程序並啓用了遷移。在我的Global.asax,我有這樣的:MigrateDatabaseToLatestVersion在ASP.NET中的性能

using (var context = new MyContext()) 
{ 
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>()); 
    context.Database.Initialize(true); 
} 

的問題是,每次我的應用程序需要時間來啓動(由於IIS將其關閉爲例),這個邏輯在運行,儘管在大多數情況下,沒有遷移要執行。這大大減緩了請求的處理。

我在這裏有什麼選擇?什麼是最佳做法?我可以禁用它,並使用軟件包管理器控制檯來手動執行遷移,但這樣做會勝過目的(儘管如果沒有其他選項,我準備這樣做)。

+1

自動遷移已被刪除在EF核心(這裏是一些[推理](http://www.bricelam.net/2014/12/16/ef7-migrations-designtime.html)),所以看起來像方向是手動執行遷移。 –

+0

@IvanStoev如果您將您的評論添加爲答案,我會將其標記爲正確答案。 – Peter

回答

2

EF6自動遷移似乎引入了幾個問題(不僅僅是性能),所以EF Core團隊決定從EF Core中刪除它們(您可以閱讀一些推理here)。

由於EF Core是EF6後繼者(實體框架的未來),看起來像推薦(最佳實踐)是禁用它並手動執行遷移。