我有一个存储数据库元数据的构造
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;
答案 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将自动为您包含表格,然后在查询中包含这些导航属性。