在我的ASP.NET EF 6的應用程序,我有以下配置:如何正確推動實體框架代碼優先遷移到生產中?
internal sealed class Configuration : DbMigrationsConfiguration<Gcim.Management.Module.BusinessObjects.ManagementDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(Gcim.Management.Module.BusinessObjects.ManagementDbContext context)
{
}
}
在我的項目,我啓用了EF代碼優先的遷移。 我能夠從VS Package Manager提示符運行添加遷移以及update-database。 但是,當我的實體發生更改時,添加遷移和更新數據庫僅適用於dev環境。 當我發表我的ASP.NET項目,生產IIS安裝並運行,我仍然得到這個錯誤:
The model backing the 'ManagementDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
些什麼,我需要,以迫使生產增量DB的變化做,沒有數據丟失?
什麼是你的部署過程?您可以使用'migrate.exe'調用遷移 - 我們通常在持續集成設置(例如TeamCity,Jenkins,TFS)中將其作爲部署的一部分。您如何部署應用程序將告知您如何執行遷移。 – NWard
我只是將發佈的包解壓到C:\ inetroot \ www \ MyAppName文件夾下。 migrate.exe需要哪些文件才能執行遷移?在VS中,C#遷移文件是項目的一部分,但是在項目發佈之後,它們不是應用程序包的一部分。在你的情況下,當你運行migrate.exe時,你提供什麼作爲參數,來解釋什麼需要被遷移? –
您可以在這裏找到有關migrate.exe的文檔:https:// msdn.microsoft.com/en-us/data/jj618307.aspx我們配置了構建步驟以將目標中的最新遷移作爲目標。我們的構建服務器可以通過版本控制訪問完整的源代碼,因此運行時可以使用遷移文件。就你而言,由於你正在手動完成所有工作,因此在解壓縮之前,需要針對生產環境運行遷移。我建議使用像Jenkins(免費!),TFS或TeamCity這樣的構建/部署解決方案,因爲它可以使這個過程更加強大。 – NWard