我有一个带有edmx文件中定义的数据模型的Web项目。连接字符串的开头如下:
元数据= RES:// * /
这已经好了一段时间了。但是其他人在项目上创建了一个dll,它也使用了实体框架并将其添加到bin文件夹中。现在,当我尝试创建连接时,加载元数据时出错。
除了彻底改变我们中的一方或双方的工作方式之外,我想知道如果我的连接字符串可以更改为只查找我的edmx文件中定义的元数据,问题是否可以解决。问题是,对于我的生活,我找不到正确的语法来做到这一点。元数据嵌入在输出程序集中,因此没有指向的物理元数据文件。我究竟应该如何在连接字符串中指定元数据位置?
答案 0 :(得分:7)
是的我以前见过这个问题。有人问这个问题只是时间问题。
基本上res://*/
加载所有程序集中的所有元数据,因此如果有多组元数据,EF会混淆。
因此默认情况下使用res://*/
就像EF在WebApplications中所做的那样是一个错误,遗憾的是我们没有时间解决它。
解决方法是使用类似这样的连接字符串来更具体: RES:// /App_Code.Northwind.csdl|res:// /App_Code.Northwind.ssdl|res://*/App_Code.Northwind.msl;
其中App_Code是App_Code文件夹(假设您的模型位于Web项目中),Northwind是您的EDMX的名称。如果您在使用名称时遇到问题,请使用Reflector等内容查看程序集中的资源名称。
这样做可以确切地告诉EF从加载的程序集中加载哪个CSDL,SSDL和MSL,并解决您的问题。
希望这有帮助
亚历