Entity Framework:Parent Child & Inter-child 关系
Entity Framework: Parent Child & Inter-child relationships
我是 entity framework 和数据库关系的新手。我已经创建了一个 entity framework 代码优先模型,并设法获得了一个可用的层次结构。然而,我正在为我的 inter-child 关系而苦苦挣扎。结构如下:
- 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...]
我认为您要创建的是 ChildA
和 ChildB
之间的一对一关系,因此您必须告诉 EF 这种关系将如何运作。
modelBuilder.Entity<ChildA>()
.HasOptional<ChildB>(u => u.ChilbB)
.WithOptionalDependent(c => c.ChildA).Map(p => p.MapKey("ChildAID"));
查看文档以获取更多信息:
我是 entity framework 和数据库关系的新手。我已经创建了一个 entity framework 代码优先模型,并设法获得了一个可用的层次结构。然而,我正在为我的 inter-child 关系而苦苦挣扎。结构如下:
- 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...]
我认为您要创建的是 ChildA
和 ChildB
之间的一对一关系,因此您必须告诉 EF 这种关系将如何运作。
modelBuilder.Entity<ChildA>()
.HasOptional<ChildB>(u => u.ChilbB)
.WithOptionalDependent(c => c.ChildA).Map(p => p.MapKey("ChildAID"));
查看文档以获取更多信息: