所以故事是這樣的。

我有一個名為PA.DLL的項目,其中包含一個實體模型(edmx)文件。

在我引用PA.DLL的另一個項目中,我複制了在主應用程序app.config中創建edmx文件時(自動)創建的連接字符串。

但是,當我加載並運行以下行時:

using (PAEntities analytix = new PAEntities())
           {
...
}

我收到以下錯誤:

System.ArgumentException: The specified default EntityContainer name 'PAEntities' could not be found in the mapping and metadata information.

有誰知道這個錯誤的原因是什麼?

這是我的連接字符串配置方式:

<add name="PAEntities" 
    connectionString="metadata=res://*/PAEntities.csdl|res://*/PAEntities.ssdl|res://*/PAEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=XSXSX;Initial Catalog=PA;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

謝謝

一般承認的答案

一種解決方案是將連接字符串放置到使用DLL的項目的配置文件中。
另一種是在代碼中傳遞連接字符串(使用PAEntities的參數化構造函數)。


熱門答案

在解決方案資源管理器中,右鍵單擊實體數據模型文件(.edmx),然後單擊“打開方式”。將打開一個對話框,選擇一個程序供您打開文件。選擇或雙擊“XML(文本)編輯器”。

現在,您將查看EDM文件的XML版本,您可以在其中輕鬆編輯“EntityContainer”名稱。

如果您更改了webconfig文件中的連接字符串,請確保“DefaultContainerName”是該XML文件中“EntityContainer”部分的名稱。

通常,當您更新* .Designer.cs文件中的defaultContainerName時,它不會更新XML文件。所以你手動完成。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因