我有两个项目:
两者都定义
Entities
。当我尝试执行using (var db = new News.Data.Entities("name=Entities"))
{
results1 = db.News.ToList();
}
using (var db = new Tag.Data.Entities("name=Entities"))
{
results2 = db.Tag.ToList();
}
在控制台应用程序上,我收到此错误:
是否可以使用
News.Data.Entities
Tags.Data.Entities
代替
News.Data.NewsEntities
Tags.Data.TagsEntities
?
最佳答案
连接字符串是在应用程序级别配置的,并且容器名用作唯一标识符。可以将containerNames更改为唯一值,或者重新实现ObjectContext
的默认构造函数以查找Setting
,可以在程序集级别对其进行配置。
编辑:
在此示例中,创建ObjectContext
,News.Data.Entities
的实例时,上下文的基类通常使用ContainerName
构造。此参数为ObjectContext
提供了所有必要的信息以建立其商店连接,并完成其所有映射业务。
基本上,在ObjectContext
类型和ContainerName
之间建立了关联。当实例化第二个上下文Tags.Data.Entities
时,它是另一种类型,它将尝试将类型与容器相关联,这就是引发异常的原因,因为您不能将同一ContainerName关联两次。
为了解决该问题,如果可以的话,最好的办法是使用不同的容器名称重新创建EDMX。如果不能删除,则可以在设计器中修改ContainerName参数,然后在记事本中打开edmx,查找“EntitiesModelStoreContainer”,然后将“Entities”部分更改为新的ContainerName。
希望能帮助到你...
关于c# - EntityContainer名称在不同程序集中必须是唯一的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4898794/