2017-02-09 109 views
0

我正在嘗試構建一個新的移動應用程序的Web服務/後端,以構建Xamarin Forms和Azure服務。我一直在關注這個tutorial爲Azure移動應用程序部署數據庫失敗

一切都很好,直到我到「將項目部署到Azure應用服務」部分,我有2個相關的問題。我用我自己的DataObjects和用作爲例子給出的標準「ToDoList」應用程序得到了同樣的問題。

  1. 當我第一次發佈時,我在發佈嚮導的「設置」選項卡上選擇「更新數據庫」,以便將新的數據對象/架構推送到我的新數據庫。然後,我點擊發布,然後我收到一個錯誤,回覆說System.Data.SqlClient.SqlException (0x80131904): Cannot attach the file '{LocalFilePath}\App_Data\{databaseName}.mdf' as database '{databaseName}'.我注意到在指定的「App_Data」文件夾中沒有任何內容,在發佈到應用服務之前需要做些什麼來構建.mdf文件?
  2. 發生此錯誤後,我嘗試重新發布數據庫,並且「發佈嚮導」有兩個不同之處。首先,我不再擁有「更新數據庫」選項,我只有「設置」選項卡上的「執行代碼優先遷移」選項,並且它變灰。其次,「預覽」選項卡顯示「沒有數據庫被選中發佈」

我試圖通過App Service以三種不同方式發佈數據庫,並且它們每個都給了我上面描述的完全相同的場景,所以我想我只是缺少一些顯而易見的東西,因爲我不熟悉Azure和移動應用程序開發。

  1. 通過Azure門戶創建移動應用程序後臺+服務+數據庫,然後從Azure門戶部署「快速入門」項目。
  2. 遵循類似於上面的教程,但專門用於發佈默認情況下插入的ToDoList數據庫模式。這是tutorial我跟着
  3. 按照上面的教程,但利用我自己的自定義DataObjects,而不是本教程中描述的。

我已經閱讀了關於如何讓「Execute Code First Migrations」可用的方法,但我還沒有發現任何實際上允許我部署數據庫的東西,因爲它一直說「No數據庫被選擇發佈「,並且我無法獲得」更新數據庫「選項,以便在初始失敗後顯示。有什麼明顯的我失蹤了?

回答

0

當我去第一時間公佈,我選擇「更新數據庫」,在「設置」選項卡上的,以便通過推我的新數據對象/模式到我的新的數據庫發佈嚮導。然後,我點擊發布,然後收到一條錯誤消息:System.Data.SqlClient.SqlException(0x80131904):無法將文件「{LocalFilePath} \ App_Data {databaseName} .mdf」附加爲數據庫「{databaseName}」。我注意到在指定的「App_Data」文件夾中沒有任何內容,在發佈到應用服務之前需要做些什麼來構建.mdf文件?

官方document在發佈網站嚮導提及更新數據庫如下:

您選擇了發佈Web嚮導標記更新數據庫的複選框。此複選框顯示應用程序訪問的SQL Server數據庫,而不使用實體框架代碼優先上下文類。

如果您在部署應用之前,不會創建您的源本地數據庫,你會得到錯誤如下:

有關詳細信息,你可以參考dbDacFx網站部署此document中的供應商部分。

發生此錯誤後,我嘗試重新發布數據庫,並且發佈嚮導有2個區別。首先,我不再擁有「更新數據庫」選項,我只有「設置」選項卡上的「執行代碼優先遷移」選項,並且它是灰顯的。其次,預覽標籤說:「沒有數據庫選擇發佈」

執行代碼首先遷移(在應用程序啓動運行)顯示該應用程序訪問通過使用實體框架代碼優先上下文類數據庫。

當您選擇此選項,使代碼首先使用MigrateDatabaseToLatestVersion初始化類的部署過程中自動配置目標服務器上的應用程序Web.config文件。

如果在程序包管理器控制檯中運行Enable-Migrations命令,則可以選中此複選框。有關更多詳細信息,請參閱此document中的實體框架代碼優先遷移部分。

對於一種簡單的方法,您可以利用Azure門戶中的「QuickStart」項目通過EF代碼首先遷移您的db。當部署你的項目,在VS發佈Web嚮導目標數據庫(如天青DB)「設置>數據庫」下的ConnectionString更新本地的ConnectionString如下:

+0

非常感謝您的建議,我當我回家時會給他們一個嘗試! –

+0

你解決了這個問題嗎,有沒有更新? –

+0

嗨布魯斯,是的,我們能夠弄清楚如何部署數據庫。我仍然在處理種子數據上的一些錯誤(因爲我將一個對象列表附加到另一個對象上,我收到了一些外鍵問題) - 但是感謝您的信息,它能夠幫助我獲得數據庫部署! –

相關問題