1

My MyModel.edmx位於程序集DataAccess.dll中。這個程序集在我的web項目中引用(C#)使用EntityDataSource時,無法加載指定的元數據源 - 實體框架

我的實體連接字符串是問題。

這是我從app.config中複製到我的win.config:

<add name="MyModelEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

的問題是我得到的誤差源無法加載的元數據。

我確定我的型號名稱是正確的。我用反射器檢查了dll。

所以,我想我應該包括我的DLL到連接字符串,我想這

<add name="MyModelEntities" connectionString="metadata=res://DataAccess.dll/MyModel.csdl|res://DataAccess.dll/MyModel.ssdl|res://DataAccess.dll/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

但是我得到錯誤DataAccess.dll不能在組件枚舉的列表中找到。

有什麼辦法直接在dll裏面引用我的模型。 而我的dll沒有強烈地命名爲dll。

任何幫助表示讚賞。

感謝

+0

我發現添加該組件名稱,連接字符串對我的作品,但不與.dll擴展名 - 嘗試... //數據訪問/ ...而不是... //DataAccess.dll/....當然,*也適用於我,所以您可能會遇到不同的問題米 – JimMat 2012-02-09 02:19:58

+0

我不得不說,到目前爲止,我開始了4-5個項目(使用EF),這部分從來沒有失敗過。我從來沒有修理任何東西。事情會剛剛開始工作。我要麼重新創建項目,要麼做那樣的事情。而且我真的對此感到不安全......即使在工作時也可能會隨時拋出無意義的錯誤信息...... – bobetko 2012-02-09 14:15:04

回答

0

我也有過類似的經驗,bobetko,重建項目和數據庫實體框架5,並得到它的工作了一段時間。 (VS 2013 Express和SQL Server 2008 R2中)

於是,我做了這一點,它修好了我的所有問題......

建模和映射文件複製到輸出目錄

  1. 雙單擊解決方案資源管理器中的.edmx文件。
  2. 該文件在實體設計器中打開。
  3. 右鍵單擊設計圖面的空白部分,然後選擇 屬性。
  4. 顯示Visual Studio屬性窗口。
  5. 將元數據工件處理屬性的值設置爲將 複製到輸出目錄。

http://msdn.microsoft.com/en-us/library/vstudio/cc716709(v=vs.100).aspx

我覺得VS得到由多個項目在同一數據庫的多個連接解決方​​案相混淆。上述修復爲我解決了它並修復了我的破碎項目。

0

這可能沒有幫助,但它應該清楚元數據資源如何與引用程序集一起工作。

我遇到了同樣的問題,在閱讀JimMat對原始問題的評論以及一些試驗和錯誤之後,我瞭解到實體對元數據字符串中的限定名稱很挑剔。

確保元神器處理(如藍天提到)設置爲嵌入在輸出組件,因爲這將會CSDL/SSDL/MSL文件烤到DLL爲組裝,並複製到引用項目的bin目錄。重建解決方案。

  • RES:// - 告訴實體項目的嵌入式資源看,而不是在磁盤上的文件的路徑
  • ... // */... - 使用通配符的組合名稱
  • .../Namespace.Of.MyModel.csdl - 資源的全限定名稱,省略程序集名稱

例子:如果我的DbContext是所謂的「數據」與「Data.Staging.Context」的完全合格的名稱的項目/組裝我的元數據會看起來像

metadata=res://*/Staging.Context.csdl|res://*/Staging.Context.ssdl|... 

或者,根據JimMat:

metadata=res://Data/Staging.Context.csdl|res://Data/Staging.Context.ssdl|... 
相關問題