LINQ包含多个孩子

时间:2014-06-19 14:49:42

标签: c# linq entity-framework

我有一个存储数据库元数据的构造

public class Database {
    public string ConnectionString { get; set; }
    public virtual ICollection<Table> Tables { get; set; }
}

public class Table {
    public string TableName { get; set; }
    public virtual ICollection<ForeingKey> ForeingKeys { get; set; }
    public virtual ICollection<Field> Fields { get; set; }
}

我想用LINQ在一个查询中检索所有数据库相关数据 我可以从数据库中查询表和一个子实体

            var qry = from d in context.Databases
                         .Include(x => x.Tables.Select( c => c.Fields))
                      select d;

但是,如何从Tables集合中读取两个孩子?像这样的东西

 var qry = from d in context.Databases
             .Include(x => x.Tables.Include(t => t.Fields).Include(t => t.ForeingKeys))
           select d;

2 个答案:

答案 0 :(得分:13)

实现同样目的的另一种方法是

        var qry = from d in context.Databases
                      .Include(x => x.Tables)
                      .Include(x => x.Tables.Select(c => c.Fields))
                      .Include(x => x.Tables.Select(f => f.ForeingKeys))
                  select d;

我更喜欢不使用文字。

答案 1 :(得分:7)

var qry = from d in context.Databases
    .Include("Tables.Fields")
    .Include("Tables.ForeingKeys")
  select d;

EF将自动为您包含表格,然后在查询中包含这些导航属性。