2011-07-19 103 views
1

引用EDMX我在MVC項目中的EF連接字符串,像這樣:在MVC項目

的connectionString =「元數據= RES:// /Models.db.csdl|res:///Models.db.ssdl | res://*/Models.db.msl; provider = System.Data.SqlClient; provider connection string = " Data Source = localhost; Initial Catalog = SystemName; Integrated Security = True; MultipleActiveResultSets = True " 「providerName =」System.Data.EntityClient「

一切都很好,直到我添加了第二個項目,並引用enced包含edmx的MVC項目,但在運行期間,我得到:

指定的元數據路徑無效。有效路徑必須是現有目錄,擴展名爲「.csdl」,「.ssdl」或「.msl」的現有文件,或標識嵌入資源的URI。

我已閱讀文章發佈後,但我不知道如何正確引用MVC項目中的元數據。有人能指出我正確的方向嗎?我不想創建一個連接字符串,它在部署和調試過程中會被破壞。

回答

2

資源的格式爲:

Metadata=res://<assemblyFullName>/<resourceName>. 

偷懶的方法是使用通配符資源://*/bah.msl。它會從bin目錄加載模型/映射文件,調用程序集以及引用的程序集。

你的情況:

res:///Models.db.csdl|res:///Models.db.ssdl|res://*/Models.db.msl 

是不正確,請嘗試:

res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl 

完整的字符串:

connectionString="metadata=res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl;provider=System.Data.SqlClient;provider connection string='Data Source=localhost;Initial Catalog=SystemName;Integrated Security=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" 

另外,您可以使用絕對引用這是更快(但我假設這會對你更加痛苦):

Metadata=res://<DLL>, <Version>, neutral, <SN>/Models.db.csdl|Models.db.ssdl|Models.db.msl 
+0

當我嘗試// * /字符串VS崩潰。 Microsoft Visual Studio遇到問題,需要關閉。 – user536698

+1

你用我的connectionString從上面?請確保你看到我用'provider connection string ='' – Nix

+0

替換了你的'provider connection string =''這樣做了......感謝你的幫助! – user536698