![](/img/trans.png)
[英]How to automatically run Code First Migrations on DB when using WebDeploy to publish web app
[英]Code first migrations when using Filesystem based publish
我對此比較陌生。 我試圖將我的asp.net Web應用程序發布到生產IIS服務器。 在visual studio中,我選擇基於Filesystem的發布,因為該服務器不支持Web部署。
我為我的數據庫使用Code First Migrations。 只要是第一次,或者如果我放棄所有表,那么生產的部署工作正常。 但是,如果我有現有的生產數據表,我會得到以下錯誤 -
“自創建數據庫以來,支持'ApplicationDbContext'上下文的模型已發生更改。請考慮使用Code First Migrations更新數據庫”
我的模型更改時如何啟用自動架構更新? 我將“AutomaticMigrationsEnabled”我的Configuration.cs設置為true。 我需要在global.asax或Web.Config中設置一些內容嗎? 我錯過了什么?
在我的本地服務器上,我可以運行Update-Database。 每當我推送模型更新時,如何在生產中自動執行此操作?
更新:通過遵循生產中使用實體框架(代碼優先)遷移中的步驟,我能夠擺脫生產中的錯誤
但是我不確定這是否是解決問題的最佳方法。 或者,如果我希望每次應用程序啟動時生產都繼續運行此行。
Database.SetInitializer<ApplicationDbContext>(new
MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
當您使用MigrateDatabaseToLatestVersion時,它確實會為您運行遷移。 所以你肯定需要這個或其中一個替代方案,比如在代碼中使用DbMigrator或生成腳本( update-database -Script
)。
這些將在您的文件夾中運行遷移。 問題是您的配置中有AutomaticMigrationsEnabled = true
。 這告訴EF只是自動更新數據庫,而不是創建基於代碼的遷移文件。
有幾種解決方案。 首先,您可以在部署之前添加手動遷移( add-migration MyMigrationName
),也可以將初始化程序切換為類似CreateDatabaseIfNotExists
,然后在代碼中調用遷移,如上所示。
請參閱此處獲取詳細說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.