Entity Framework:Parent Child & Inter-child 关系

Entity Framework: Parent Child & Inter-child relationships

我是 entity framework 和数据库关系的新手。我已经创建了一个 entity framework 代码优先模型,并设法获得了一个可用的层次结构。然而,我正在为我的 inter-child 关系而苦苦挣扎。结构如下:

  1. Parent Object

1.1 "ChildA" children(可以有任意数量)

1.2 "ChildB" children(可以有任意数量)

"ChildA" 和 "ChildB" 因此共享相同的 parent object。如果 parent 被删除,这两个集合也将被删除。现在是我正在努力的部分。如何定义 "ChildA" 和 "ChildB" 之间的关系?

"ChildB" 引用 "ChildA" 的一个实例,我希望它是 'on the same level',即 "ChildA" 不一定是 parent "ChildB"。这可能吗,还是 "ChildA" 必须是 "ChildB" 的 parent?我不想在这里建立 parent 关系的原因是,其他 children 可以在此级别上引入,例如"ChildB" 可以引用 "ChildA"、"ChildC" 和 "ChildD" 的实例。从 "ChildB" 到一个(或多个)其他 children 的关系将始终是 one-way,即 "ChildB" 将从另一个 children 提取信息并在内部使用它.

当前代码:

Public class Parent 
{
    public int ParentID {get;set;}
    public virtual ObservableCollection<ChildA> ChildrenA {get;set;}
    public virtual ObservableCollection<ChildB> ChildrenB {get;set;}
}

public class ChildA
{
    public int ChildAID {get;set;}
}

Public class ChildB
{
    public int ChildBID {get;set;}
    public ChildA childA {get;set;}
    public int childAID {get;set;}
    [...some calculations using values/references from childA...]
}

[...More of these children defined...]

我认为您要创建的是 ChildAChildB 之间的一对一关系,因此您必须告诉 EF 这种关系将如何运作。

modelBuilder.Entity<ChildA>()
        .HasOptional<ChildB>(u => u.ChilbB)
        .WithOptionalDependent(c => c.ChildA).Map(p => p.MapKey("ChildAID"));

查看文档以获取更多信息:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx