4

我只是在搞Azure,而我似乎無法讓我的db工作。我下面什麼這裏說:https://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/,我更新了我的web.config中有這樣的:Azure EF代碼第一遷移初始化程序

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
     <contexts> 
      <context type="DownloadThis.Models.DownloadThisDb, DownloadThisDb"> 
       <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion"> 
        <parameters> 
         <parameter value="DownloadThisDb_DatabasePublish" /> 
        </parameters> 
       </databaseInitializer> 
      </context> 
     </contexts> 
    </entityFramework> 

如示例中所示,但我不斷收到此錯誤:

Format of the initialization string does not conform to specification starting at index 0.

我有三倍檢查我的connectionString,所以這不是 - 任何想法?

回答

1

我想你錯過了你的類型字符串.

<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion"> 

紅色矩形在代碼使得它難以閱讀...

如果行得解決它,發佈評論,我會工作的一個樣本,以配合你,看看我能得到它的工作...

[更新日期2012-08-15]

好的 - 我想我知道這裏發生了什麼......您提到「我更新了我的web.config以獲取此:」並顯示了您的XML。當我瀏覽本教程時,我不需要在我的web.config中輸入任何額外的XML。在發佈過程中,通過Visual Studio的部署過程自動爲我添加了XML,並且它「一切正常」。

這裏是您的解決方案:

回到原來的web.config文件沒有這些更新,然後再次發佈。

僅供參考,這裏是從我的兩個web.config文件<entityFramework>部分,首先從我的項目,第二個從我的託管服務(我是通過FTP連接到正在運行的網站,並下載它)。該VS項目是爲這個職位的SO記錄號碼呼叫11964172

本地web.config文件設置

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

部署web.config文件設置

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <contexts> 
     <context type="_11963331.Models.ToDoDb, 11963331"> 
     <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[_11963331.Models.ToDoDb, 11963331], [_11963331.Migrations.Configuration, 11963331]], EntityFramework, PublicKeyToken=b77a5c561934e089"> 
      <parameters> 
      <parameter value="_11963331.Models.ToDoDb_DatabasePublish" /> 
      </parameters> 
     </databaseInitializer> 
     </context> 
    </contexts> 
    </entityFramework> 

我想這就是爲什麼他們拍攝了web.config文件更改的圖片,而不是實際提供的代碼鍵入:-)

+0

良好的通話!但我仍然收到錯誤...? – naspinski 2012-08-15 05:41:44

8

假設您使用VS2012發佈嚮導發佈,我遇到了同樣的問題。如果您選擇讓發佈嚮導啓用代碼優先遷移,而不是手動將代碼連接到代碼中,則需要在發佈設置中提供連接字符串。您的正常連接字符串不用於運行遷移,這個新的連接字符串僅用於此目的。這很好,因爲您可以指定一個具有提升權限的帳戶來執行遷移,但是,您的應用程序不會在此用戶上下文下運行。問題在於嚮導不需要明確指定此連接字符串。當你不提供這個時,你最終會得到一個空的遷移連接字符串,並且你花費大量的時間來弄清楚你的正常連接字符串有什麼問題。

Publish Web Application Settings

比方說,你的上下文類被命名爲FooContext。按照慣例,你的web.config中會有一個名爲FooContext的連接字符串。當您通過此嚮導啓用代碼遷移時,該向導將創建名爲FooContext_DatabasePublish的第二個連接字符串,該連接字符串僅用於運行代碼第一次遷移。

這個blog post on MSDN詳細解釋了這個過程。

+0

這節省了我一個小時,謝謝。 – 2015-01-24 00:23:48

0

參見this question。如果您將部署連接字符串保留爲「遠程連接字符串」,並選中「執行代碼優先遷移」框,則會出現此異常,因爲遷移連接字符串DownloadThisDb_DatabasePublish將無法​​正確定義。指定一個真實的連接字符串,而不是在部署嚮導中將連接字符串框留空,或者在您的Azure站點配置中定義名爲DownloadThisDb_DatabasePublish的連接字符串。