簡體   English   中英

使用基於文件系統的發布時代碼首次遷移

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM