实体框架:Parent - Child &Inter-child关系
本文关键字:Inter-child 关系 Child 框架 Parent 实体 | 更新日期: 2023-09-27 18:16:44
我是实体框架和数据库关系的新手。我已经创建了一个实体框架代码优先模型,并设法得到一个工作层次结构到位。然而,我在与孩子之间的关系中挣扎。结构如下:
- 父对象
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...]
我认为你试图创建的是ChildA
和ChildB
之间的一对一关系,因此你必须告诉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