我在MVC项目中有一个EF连接字符串,如下所示:
的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“
一切顺利,直到我添加了第二个项目并引用了包含edmx的MVC项目,但在运行时我得到:
指定的元数据路径无效。有效路径必须是现有目录,扩展名为“.csdl”,“。ssdl”或“.msl”的现有文件,或标识嵌入资源的URI。
我在帖子后阅读了帖子,但我无法弄清楚如何正确引用MVC项目中的元数据。有人能指出我正确的方向吗?我不想创建一个特定的连接字符串,它在部署和调试期间会中断。
答案 0 :(得分:2)
资源格式为:
Metadata=res://<assemblyFullName>/<resourceName>.
懒惰的方法是使用外卡res://*/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