gpt4 book ai didi

c# - EntityContainer 名称在不同的程序集中必须是唯一的?

转载 作者:太空狗 更新时间:2023-10-29 23:26:32 26 4
gpt4 key购买 nike

我有两个项目:

  • 新闻.数据
  • 标签.数据

两者都定义了实体。当我尝试执行时

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();
}

在控制台应用程序上我得到这个错误:

Schema specified is not valid. Errors: Model1.csdl(3,4) : error 0019: The EntityContainer name must be unique. An EntityContainer with the name 'Entities' is already defined.

是否可以使用

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com