ADOEF连接字符串问题

1、找不到实体容器。

在开发ADOEF的对象时作为dll发布。由其他框架这些dll进行加载。但在加载两个不同的dll是发生了一个小问题。

     建立两个dll:test1和test2。两个dll中的.edmx都采用NewEntity这个名字。在加载这两个dll时,无论先加载哪一个,在加载第二个时都会出错:

在映射和元数据信息中找不到指定的默认 EntityContainer 名称“TestEntities”。

     加载第二个时找不到实体名称。估计是路径的问题,导致找不到。字符串如下:

<add name="TestEntities" connectionString="metadata=res://*/NewEntity.csdl|res://*/NewEntity.ssdl|res://*/NewEntity.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=JIAYZ2003\SQL2005;Initial Catalog=Test;Integrated Security=True;

MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

     因为所有的实体定义都在.csdl,.ssdl,msl中,因此要正确的找到这三个文件。

     res://*/:

     "*"表示它会去输出路径下所有的Aseembly中找这三个被嵌入在Assembly中的文件。如果两个dll中有相同的配置,而实体名不同就会引起错误。如果知道Assembly的名称,最好使用强制路径:

即:metadata=res://test1/NewEntity.csdl|res://test1/NewEntity.ssdl|res://test1/NewEntity.msl;

这样既保证正确性又提高速度。

部分相关配置:

Metadata Artifact Processing: 设置为Embed,将三个实体文件嵌入到Assembly中。

Build Action:设置为EntityDeploy。

原文地址:https://www.cnblogs.com/jyz/p/1409714.html