在我們的生產環境中,我們有一個自動部署腳本,它會關閉我們的網站,運行遷移並將其重新聯機。我們希望避免在沒有任何需要運行的遷移時切換到新代碼,從而減少網站的使用。實體框架 - 檢查待處理的遷移
實體框架是否有像「更新數據庫」這樣的命令讓我們檢查是否有遷移運行?
在我們的生產環境中,我們有一個自動部署腳本,它會關閉我們的網站,運行遷移並將其重新聯機。我們希望避免在沒有任何需要運行的遷移時切換到新代碼,從而減少網站的使用。實體框架 - 檢查待處理的遷移
實體框架是否有像「更新數據庫」這樣的命令讓我們檢查是否有遷移運行?
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();
}
我用DbContext.Database.CompatibleWithModel()
與EF 6.1.3
如果手動添加了遷移步驟(例如,枚舉值已更改並且您可能會應用腳本來更新數據庫中的相應字段),則'DbContext.Database.CompatibleWithModel()'將返回'true'。這與原始請求不符! – Marcel
我還沒有得到周圍至今仍未落實這一點,但是這看起來就像是我要找的。 –