LINQ包括多个孩子

本文关键字:孩子 包括多 LINQ | 更新日期: 2023-09-27 18:09:34

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

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;

LINQ包括多个孩子

实现这一点的另一种方法是

        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;

我宁愿不使用文字。

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

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