如何使用 linq 的 .在反向属性上使用 EF 4.1 时包含()

本文关键字:EF 包含 linq 何使用 属性 | 更新日期: 2023-09-27 18:33:36

我无法弄清楚如何使用.Include()来访问这种嵌套关系。我尝试了看似最直接的方法,但智能感知没有填充,当我手动输入关系时会出现编译错误。

我有这个数据库映射设置

public class W
{
 public int WId { get; set; }
 public virtual ICollection<T> Ts { get; set; }
}
public class T
{
 public int TId { get; set; }
 public int WId { get; set; }
 public int CId { get; set; }
 public virtual W W { get; set; }
 public virtual C { get; set; }
}
public class C
{
 public int CId { get; set; }
 public virtual ICollection<T> Ts { get; set; }
}

我有一个查询的 get 方法

//set in constructor
DbSet<W> dbSet;
DbContext context;
//called in method
IQueryable<W> query = dbSet;
query = query.Include(w => w.Ts);//works
query = query.Include(w => w.Ts.C); //I wanted to do this but it doesn't work

我可以像这样使用.Include()吗?

看起来它会顺利工作,但显然我做错了。我不希望每次都遍历 Ts 集合,然后手动填充它们的 C。

如何使用 linq 的 .在反向属性上使用 EF 4.1 时包含()

您可以使用

以下语法:

query = query.Include(w => w.Ts.Select(t => t.C));