实体框架:Parent - Child &Inter-child关系

本文关键字:Inter-child 关系 Child 框架 Parent 实体 | 更新日期: 2023-09-27 18:16:44

我是实体框架和数据库关系的新手。我已经创建了一个实体框架代码优先模型,并设法得到一个工作层次结构到位。然而,我在与孩子之间的关系中挣扎。结构如下:

  1. 父对象

1.1 " childda "子节点(可以有任意数量)

1.2 " childdb "子节点(可以有任意数量)

因此

" childda "answers" childdb "共享同一个父对象。如果父集合被删除,这两个集合也将被删除。现在是我纠结的部分。如何界定"儿童da"与"儿童db"的关系?

" childdb "引用了一个" childda "的实例,我希望这是"在同一级别上",即。"ChildA"不一定是"ChildB"的父结点。这是可能的吗?还是"ChildA"必须是"ChildB"的父节点?我不想在这里建立父母关系的原因是,其他孩子可以在这个层面上被介绍,例如。"儿童db"可以指"儿童da"、"儿童dc"answers"儿童dd"的实例。从"childdb"到一个(或多个)其他子节点的关系将始终是单向的,即:" childdb "将从其他子节点中提取信息并在内部使用。

当前代码:

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...]

实体框架:Parent - Child &Inter-child关系

我认为你试图创建的是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