發佈的Web應用程序時,我建設有代碼優先遷移的ASP.NET MVC應用程序EF與SQL Azure的託管DB它Azure上。我第一次發表這個,它很好。但自那時以來,我的模型發生了變化,Azure數據庫中的模式未更新爲匹配。當我部署時,我確實已選中「執行代碼優先遷移」。當這不起作用時,我刪除了我的數據庫,然後在Azure門戶中重新創建它,認爲這會觸發它更新。但是,那沒有奏效,所以我在遷移配置中設置了AutomaticMigrationsEnabled = True。它仍然沒有工作,所以目前我在Azure中的數據庫沒有任何表。如何才能讓Azure中的數據庫被迫更新以匹配我的模型,以便發佈的網站能夠正常工作?我曾嘗試尋找是否有辦法將VS本地數據庫編寫爲Create查詢並在SQL管理工作室中執行該查詢,但無法找到如何執行此操作的方法。模式不更新從Visual Studio
回答
如果您確定在發佈設置中選擇了update database
,並且連接字符串是正確的並且它仍然沒有更新。也許下面將幫助您:
我有時會收到類似這樣的問題,這是很令人沮喪,我發佈的文件是正確的,我的設置被設置爲允許發佈過程中出現SQL更新。但有時候數據庫還沒有更新,我得到了一個很好的「支持上下文已經改變」的錯誤,有時候罪魁禍首就是沒有更新過的遷移表。不幸的是,讓數據庫同步的唯一可靠方法是通過比較[dbo].[__MigrationHistory]
來檢查它們都在哪個遷移歷史記錄。如果您發佈的服務器缺少最新的遷移歷史記錄,那麼您可以通過比較生成一個SQL腳本輸入到包管理器控制檯:
Update-Database -Script -TargetMigration [migration name]
「遷移名」應該是最後遷移您發佈的服務器有,Visual Studio將生成可以用來將數據庫的SQL腳本名稱直到目標遷移的最新遷移。
有時(雖然很少,它只發生一次或兩次)上述不起作用,無論出於何種原因(通常是因爲遷移文件已被刪除),如果是這樣的話,那麼它是一個好主意腳本整個數據庫和櫻桃選擇你需要的SQL。
Update-Database -Script -SourceMigration:0
,這將產生對每個遷移腳本,然後你可以挑櫻桃根據您所做的更改。 '最新'的變化將更接近文件的底部。每次的遷徙變化將有如果檢查開始:
IF @CurrentMigration < '201710160826338_mymigration' BEGIN
你可以用它來選擇您所需,如果你挑選SQL一定要包括更新遷移歷史的位。這將是在IF塊的末尾,是這個樣子:
INSERT [dbo].[__MigrationHistory]([MigrationId], [ContextKey], [Model], [ProductVersion]) VALUES (N'201710101645265_test', N'API.Core.Configuration', 'Some long checksum')
包括遷移歷史將確保Visual Studio中不會再有問題。
希望這會有所幫助。
- 1. 如何將Visual Studio工作環境從Web模式更改回Visual C++模式?
- 2. Visual Studio 2012更新
- 3. 停止Visual Studio設計模式刷新
- 4. 更改Visual Studio 2012 C#模塊格式
- 5. 更新實體框架模型後,Visual Studio看不到更改
- 6. 更新的Visual Studio 2017年從Visual Studio 2015.3和2017年的RC
- 7. SQL Azure數據同步服務和模式更新(Visual Studio模式比較)
- 8. 如何從模型,Visual Studio 2012和EF5更新數據庫
- 9. visual studio 2010不更新qrc文件
- 10. Visual Studio SQL Server表不更新
- 11. 的Visual Studio 2017年不更新引用
- 12. Visual Studio 2013更新2不打開cshtml
- 13. Visual Studio 2015不會刷新更改
- 14. 正在更新Visual Studio 2010
- 15. IIS未由Visual Studio更新
- 16. SP1更新Visual Studio Express 2008
- 17. 如何更新Visual Studio 2015?
- 18. 在Visual Studio更新1
- 19. Visual Studio 2010 - C#更新器
- 20. Visual Studio:失敗更新
- 21. Visual Studio 2012更新查詢
- 22. Visual Studio更新嚮導MySql
- 23. 「更新模型」嚮導不適用於Npgsql和Visual Studio 2013 EntityFramework
- 24. visual studio 2017安全模式
- 25. Visual Studio 2008 Emacs模式
- 26. Visual Studio中的塊模式
- 27. visual studio集成模式
- 28. 的Visual Studio全屏模式
- 29. Visual Studio新行格式化
- 30. Visual Studio 2013擴展和更新 - 更新按鈕不起作用
您是否嘗試在部署後運行應用程序?這就是遷移的開始時間(不是在部署過程中)。請參閱[這裏](https://docs.microsoft。COM/EN-US/ASPNET/MVC /概述/工具入門/工具入門與 - 使用-EF-MVC /遷移和部署,與-的實體框架式-AN-ASP-NET- MVC的應用程序)。如果需要,可以用'update-database -Script'生成一個腳本。 –
VS在部署完成後自動啓動網站...所以是的,我之後運行了它。起初(在刪除數據庫之前),它會開始很好,但是在導航到使用新字段的頁面時,我會遇到錯誤。我嘗試了「update-database -Script」,但它給了我一個_MigrationHistory的插入查詢(這是我看到的在我嘗試過的其他所有東西之後在數據庫中添加的唯一東西)。 – Andarta