gpt4 book ai didi

c# - 在 Entity Framework 7 中创建自引用的多对多关系

转载 作者:太空狗 更新时间:2023-10-29 20:42:28 24 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 7 fluent API 设置我的数据库以添加自引用多对多关系。有问题的类看起来像:

public class Definition
{
// Some properties
public virtual ICollection<Definition> AllowedChildDefinitions { get; set; }
}

其中预期的关系是每个定义都可以有任意数量的任何实例的子项。我希望有一个包含父/子列的单独表,其中每个父项可以有多个子项,每个子项可以在多个父项中。

有多对多的示例和自引用表的示例,但我不知道如何将两者结合起来。

最佳答案

解决方法是将连接表映射到一个实体。请调查一下。

public class Definition
{
public int Id { get; set; }
public ICollection<ChildrenDefinition> ChildrenDefinitions{ get; set; }
}

public class ChildrenDefinition
{
public int DefinitionId { get; set; }
public Definition Definition { get; set; }

public int ChildrenId { get; set; }
public Children Children { get; set; }
}

public class Children
{
public int Id { get; set; }
public ICollection<ChildrenDefinition> ChildrenDefinitions{ get; set; }
}

确保使用组合键配置 ChildrenDefinition:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ChildrenDefinition>().HasKey(x => new { x.DefinitionId, x.ChildrenId });
}

要导航,请使用选择:

// Children.Definition
var definitions = Children.ChildrenDefinitions.Select(c => c.Definition);

希望这对您有所帮助!

关于c# - 在 Entity Framework 7 中创建自引用的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653514/

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