在实体框架中,三个实体有一对多的关系,如祖父母,子女和孙子女。
如何从孙子的主键获得祖父母对象?
谢谢,
Newby to EF
答案 0 :(得分:0)
你可以做一些类似下面的事情,假设孙子孙女有一个参考(作为DbSet)给他们的父母,并且那些人提到他们的父母作为回报:
myGrandChildren.SelectMany(x => x.Parents).SelectMany(x => x.Parents);
SelectMany
这里为每个孙子选择所有父母并将其作为单个列表返回(而不是作为列表列表 - 它将它们连接起来)。
如果你只有一个大孩子 - 你只需要一个SelectMany:
grandChild.Parents.SelectMany(x => x.Parents);
答案 1 :(得分:0)
查询上下文将是(grandchildId
它是孙子的主键):
var grandparent = context
.Set<GrandParent>()
.SingleOrDefault(gp => gp.Children.Any(c => c.Children.Any(gc => gc.Id == grandchildId)));
如果我理解,你的课程看起来像这样:
class GrandParent
{
...
public List<Child> Children {get; set;}
}
class Child
{
...
public List<GrandChild> Children {get; set;}
}
class GrandChild
{
...
public int Id {get; set;}
}