在Entity Framework 7中創建自我引用多對多關係

asp.net-core c# entity-framework entity-framework-core

我正在嘗試使用Entity Framework 7流暢的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);

希望這可以幫到你!



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow