LINQ包含多个孩子

mni*_*eto 8 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; }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

mni*_*eto 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;
Run Code Online (Sandbox Code Playgroud)

我更喜欢不使用文字.


Tac*_*667 7

var qry = from d in context.Databases
    .Include("Tables.Fields")
    .Include("Tables.ForeingKeys")
  select d;
Run Code Online (Sandbox Code Playgroud)

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