2013-07-29 33 views
3

在我們的生產環境中,我們有一個自動部署腳本,它會關閉我們的網站,運行遷移並將其重新聯機。我們希望避免在沒有任何需要運行的遷移時切換到新代碼,從而減少網站的使用。實體框架 - 檢查待處理的遷移

實體框架是否有像「更新數據庫」這樣的命令讓我們檢查是否有遷移運行?

回答

13

DbMigrator類有GetPendingMigrations方法,這聽起來像你正在尋找的確切的一個。它應該像

YourMigrationsConfiguration cfg = new YourMigrationsConfiguration(); 
cfg.TargetDatabase = 
    new DbConnectionInfo( 
     theConnectionString, 
     "provider"); 

DbMigrator dbMigrator = new DbMigrator(cfg); 
if (dbMigrator.GetPendingMigrations().Any()) 
{ 
    // there are pending migrations 
    // do whatever you want, for example 
    dbMigrator.Update(); 
} 
+0

我還沒有得到周圍至今仍未落實這一點,但是這看起來就像是我要找的。 –

3

我用DbContext.Database.CompatibleWithModel()與EF 6.1.3

+0

如果手動添加了遷移步驟(例如,枚舉值已更改並且您可能會應用腳本來更新數據庫中的相應字段),則'DbContext.Database.CompatibleWithModel()'將返回'true'。這與原始請求不符! – Marcel