2013-04-01 54 views
4

我已經完成了使用數據庫首先在Azure門戶上發佈我的Web應用程序的步驟。Azure發佈數據庫第一個連接字符串不工作

然而,當我公佈我收到此錯誤信息:

使用數據庫優先和模型如果代碼優先模式下使用 首先發展可能無法正常工作的T4模板代碼生成。 要繼續使用Database First或Model First,請確保在執行應用程序的配置文件 中指定了實體 框架連接字符串。要使用這些從 數據庫優先或Model First生成的類,使用屬性或DbModelBuilder API添加任何其他 配置,然後使用 刪除引發此異常的代碼。

在web.config我的連接字符串,它已被修改後發佈:(由EDMX生成)

<add name="MySiteEntities" connectionString="metadata=res://*/MySite.csdl|res://*/MySite.ssdl|res://*/MySite.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:**********.database.windows.net,****;initial catalog=MySite;user [email protected]**********;password=*******;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

我的背景:

public partial class MySiteEntities : DbContext 
{ 
    public MySiteEntities() 
     : base("name=MySiteEntities") 
    { 
    } 
... 

我,原因是其非常困惑好像實體框架試圖首先使用代碼而不是數據庫。

更新: 我只是嘗試在本地使用相同的連接字符串,網絡應用程序似乎運行良好。 Web應用程序確實連接到遠程數據庫。只有當我發佈到azure時,它纔會失敗。

回答

0

它應該是:

 <connectionStrings> 
      <add name="MyDatabaseModelEntities" 
         connectionString="metadata=res://*/MyDBModel.csdl|res://*/MyDBModel.ssdl|res://*/MyDBModel.msl; 
         provider=System.Data.SqlClient; 
         provider connection string=&quot; 
         Data Source=<provideServerName>.database.windows.net; 
         Initial Catalog=MyDatabase; 
         Integrated Security=False; 
         User ID=<provideUserID>; 
         Password=providePassword>; 
         MultipleActiveResultSets=True; 
         Encrypt=True; 
         TrustServerCertificate=False&quot;" 
         providerName="System.Data.EntityClient"/> 
     </connectionStrings> 
+1

我在連接字符串中看到的唯一區別是:Encrypt = true; TrustServerCertificate = false。我試過這個,但沒有奏效。我錯過了什麼嗎? –

4

Entity framework work locally but not on azure閱讀我的回答類似的問題。

如果你做同樣的「錯誤」,我做了,這是發生了什麼......在Azure部署的應用程序無法找到您的連接字符串「MySiteEntities」你的web.config中。相反,在您創建Azure網站(或Cloud Service或其他)時,您創建了關聯的Azure SQL數據庫,併爲其連接字符串指定了完全相同的名稱「MySiteEntities」。後一個連接字符串是一個「普通」連接字符串,沒有模型/數據庫第一個元數據引用,因此被EF視爲代碼優先連接,然後由EF進行處理,然後抱怨衝突。請參閱Code First vs. Database First瞭解這種區別。

+0

是的,這是我的問題。我在Azure和我的web.config中配置了相同的連接字符串名稱。我在Azure中更改了名稱,並使用VS2012中的Web.Release.config轉換在將發佈代碼部署到Azure時更改字符串。一切都很好,我可以連接到我的EF數據庫。 – RMS2

0

我在本地web.config上將連接字符串更改爲遠程(Azure),然後在發佈和發佈web.config期間刪除所有設置的連接字符串。它重寫刪除web.config。然後將本地web.config上的連接字符串返回到本地連接。現在它工作正常。