2011-07-19 65 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