gpt4 book ai didi

c# - 将父子关系集合映射到 EF6 中的单个表

转载 作者:行者123 更新时间:2023-11-30 22:11:40 25 4
gpt4 key购买 nike

我正在使用 EF6 代码优先来尝试映射到所需的模式

要求是有一个组织表。每个组织可以有零到多个 parent 和零到多个 child

并且有一个包含父子关系的关系表

所以我希望有一个像这样的 POCO:

public class Organisation
{
public Organisation()
{
Children = new Collection<Organisation>();
Parents = new Collection<Organisation>();
}

public int Id { get; set; }
public string Name { get; set; }

public virtual ICollection<Organisation> Parents { get; set; }
public virtual ICollection<Organisation> Children { get; set; }
}

和这样的映射:

public class OrganisationMap : EntityTypeConfiguration<Organisation>
{
public OrganisationMap()
{
HasMany(n => n.Children)
.WithMany()
.Map(m => m.ToTable("OrganisationRelationship").MapLeftKey("ParentId").MapRightKey("ChildId"));
HasMany(n => n.Parents)
.WithMany()
.Map(m => m.ToTable("OrganisationRelationship").MapLeftKey("ChildId").MapRightKey("ParentId"));

}
}

但是如果我在设置后尝试添加迁移,我会收到错误消息:

OrganisationOrganisation1: Name: The EntitySet 'OrganisationOrganisation1' with schema 'dbo' and table 'OrganisationRelationship' was already defined. Each EntitySet must refer to a unique schema and table.

有没有办法实现这个目标?


更多信息。我持有父关系的原因是,在加载数据时,我需要找到所有没有父节点的节点,并将它们视为根的集合。

如果有比举办 parent 收藏更好的方式做到这一点,我会非常高兴!

如果我添加一个只包含子集合的迁移,那么一切正常


感谢您的输入。我仍在尝试找出是否有可能有一个或多个已知的根来简化图形的构建,但我很感兴趣是否可以进行这种映射...


数据看起来像这样: a directed acyclic graph

最佳答案

您定义了两次映射 - 只尝试一次,类似于下面的内容

public OrganisationMap()
{
HasMany(n => n.Children)
.WithMany( n => n.Parents )
.Map(m =>
m.ToTable("OrganisationRelationship")
.MapLeftKey("ParentId")
.MapRightKey("ChildId"));
}

关于c# - 将父子关系集合映射到 EF6 中的单个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123115/

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