如何在实体框架中获得孙子的祖父母

时间:2015-04-16 14:49:56

标签: entity-framework

在实体框架中,三个实体有一对多的关系,如祖父母,子女和孙子女。

如何从孙子的主键获得祖父母对象?

谢谢,

Newby to EF

2 个答案:

答案 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;}
}