我有以下型号
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<Child> Child { get; set; }
}
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<GrandChild> GrandChild { get; set; }
}
public class GrandChild
{
public int Id { get; set; }
public string Name { get; set; }
}
我现在要做的是从数据库中选择子女和孙子的父母列表。
在没有快乐的情况下尝试以下事项:
List<Parent> parent = new List<Parent>();
parent = db.parent.ToList();
答案 0 :(得分:4)
使用Include
方法:
parent = db.parent.Include(parent => parent.Child.Select(child => child.GrandChild)).ToList();
对于旧版本的Entity Framework,您必须使用字符串而不是lambda表达式:
parent = db.parent.Include("Child.GrandChild").ToList();
或者您可以使用我在博客上发布的关于here的自定义Include
扩展程序。
答案 1 :(得分:0)
在Linq to Sql中你应该使用DataLoadOptions
var dlo = new DataLoadOptions();
dlo.LoadWith<Parent>(p => p.Child );
dlo.LoadWith<Child>(c=> c.GrandChild );
db.LoadOptions = dlo;
List<Parent> parent = new List<Parent>();
parent = db.parent.ToList();