2012-07-17 32 views
2

我被卡住了。我花了將近一天的時間來解決,但無濟於事。實體框架中的connectionString

問題:使用實體框架連接到生產數據庫。

我連接開發很好。

<add name="DefaultConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MONDO;Integrated Security=True" providerName="System.Data.SqlClient" /> 

<add name="MONDOEntities" connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;Initial Catalog=MONDO;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

移動到生產中,我使用(從生產web.config文件)現有的 「DefaultConnectionString」 參數(ID和密碼)來編輯MONDOEntities的connectionString。 (我可以這樣做嗎?)另外,我將MONDOEntities中的元數據擴展爲包含.csdl,.ssdl,.msl,並在前綴(猜測,我可以這樣做嗎?)MONDO。粗體部分從dev web.config更改爲生產web.config。 *請注意,下面的connectionStrings不是由Visual Studio創建的,我只是自己改變了一些信息,試圖讓它在生產環境中工作。

<add connectionString="Data Source=MPOC\SQLEXPRESS;Database=Mondo;User ID=xxx;Password=xxxxx;" name="DefaultConnectionString" /> 

<add name="MONDOEntities" connectionString="metadata=res://*/MONDO.csdl|res://*/MONDO.ssdl|res://*/MONDO.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MPOC\SQLEXPRESS;persist security info=True;Database=Mondo;User ID=xxx;Password=xxxxx;MultipleActiveResultSets=Tru e;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

我得到的錯誤消息是: 無法加載指定的元數據資源。

Line 62: /// Initializes a new MONDOEntities object using the connection string found  in the 'MONDOEntities' section of the application configuration file. 
Line 63: /// </summary> 
Line 64: public MONDOEntities() : 

問題:可以,我只是手工修改的ConnectionStrings或是否需要通過一個彙編程序運行?這是一個網站項目,因此它在我上傳到產品後第一次編譯。它不會在我的本地開發計算機上進行預編譯。我猜,底線,我如何爲生產中的數據庫的實體連接設置適當的connectionString?


我在一個項目,我需要學習一個現有的網站。我正在進行第一次錯誤修復並學習了ado.net,我創建了一個實體數據模型並對代碼進行了一些更改。一切工作順利進行。

我將文件移動到生產,然後我得到這個錯誤:

"The specified default EntityContainer name 'MONDOEntities' could not be found in the mapping and metadata information. 
Parameter name: defaultContainerName" 

我GOOGLE了此錯誤信息,並根據一些發現,我擴大如下圖所示我的「元數據」。這是更黑暗中拍攝的我:

ORIGINAL(在web.config中自動生成的,當我創建實體數據模型):

connectionString="metadata=res://* 

NEW(我編輯/添加此):

connectionString="metadata=res://*/MONDO.csdl|res://*/MONDO.ssdl|res://*/MONDO.msl; 

這似乎讓過去的第一個錯誤,我得到一個新的錯誤信息(如OP發佈):

Unable to load the specified metadata resource. 

Line 62: /// Initializes a new MONDOEntities object using the connection string found  in the 'MONDOEntities' section of the application configuration file. 
Line 63: /// </summary> 
Line 64: public MONDOEntities() : 

我認爲我的元數據信息存在問題。但是,假設原始的自動生成的connectString只包含「metadata = res:// *」,我真的不知道如何去糾正這個問題。實際上,我甚至不確定這是問題的根源。

底線,我的實體模型在dev中平滑工作,但沒有連接到生產中。任何想法都讚賞......謝謝。

回答

0

連接字符串與編譯無關,只要您沒有定義要對其執行的某種轉換,或者您有一些自定義掛接操作就可以了。 所以是的,你可以手工修改它。

你可能已經弄錯了這些元數據,嘗試和他們一起玩(EG刪除前綴)。

你也絕對確定在你的生產環境中,MONDOEntities正在加載和使用正確的connectionString嗎?

+0

下面是我的研究到目前爲止:oops,我會在下面發表,不在這裏的評論部分...沒有格式在這裏......; -x – nanonerd 2012-07-17 23:06:21