我寫了一個當前沒有天藍色連接的API。我現在準備將此發佈到Azure。在這樣做的時候,我假設,就像許多其他部署一樣,將會有代碼優先遷移的選項。該網站已經存在,所以當我登錄我在下拉菜單中選擇我的網站下載下來,但屏幕我得到看起來像下面的其中代碼爲先遷移複選框應該是:通過Visual Studio 2013部署時無代碼優先遷移
我如何更正此問題,以便我可以使用代碼優先遷移進行部署?
我寫了一個當前沒有天藍色連接的API。我現在準備將此發佈到Azure。在這樣做的時候,我假設,就像許多其他部署一樣,將會有代碼優先遷移的選項。該網站已經存在,所以當我登錄我在下拉菜單中選擇我的網站下載下來,但屏幕我得到看起來像下面的其中代碼爲先遷移複選框應該是:通過Visual Studio 2013部署時無代碼優先遷移
我如何更正此問題,以便我可以使用代碼優先遷移進行部署?
我找到了解決這個問題的方法。如果發生這種情況,則將發佈配置文件設置爲更新數據庫模式,但不允許代碼優先遷移。我無法說出爲什麼Visual Studio有時會這樣做,但爲了解決它,您需要更改代表該配置文件的xml文件。可以在「發佈配置文件」文件夾下找到它們。很可能,您的<PublishDatabaseSettings>
元素將有一個<Object Type="Dbfx...etc.">
和可能和<UpdateFrom>
元素。擺脫這些並用下面的設置替換。
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True">
<Destination Path="your-connection-string-goes-here" />
<Object Type="DbCodeFirst">
<Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" />
</Object>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
現在乾淨和重建的好措施,你應該準備好去。請注意,如果您不刪除PublishDatabaseSettings元素中的其他預生成元素,架構將在發佈時進行更新,並且在第一次嘗試擊中API並進行遷移時,您可能會遇到錯誤。就我而言,並且在大多數情況下,這將是'X already exists'錯誤,因爲遷移嘗試創建已使用模式更新創建的表。
我能夠找出問題,並在本文的幫助下糾正它:http://www.dominicstpierre.com/2012/11/enable-code-first-migrations-check-box.html