在mvc项目中引用edmx

时间:2011-07-19 11:38:16

标签: entity-framework

我在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项目中的元数据。有人能指出我正确的方向吗?我不想创建一个特定的连接字符串,它在部署和调试期间会中断。

1 个答案:

答案 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