【问题标题】:How to include 2 navigational properties in EF?如何在 EF 中包含 2 个导航属性?
【发布时间】:2014-10-28 22:21:58
【问题描述】:
我的数据库中的一个对象有 2 个导航属性(B 和 C):
Object A
{
B bProperty
C cProperty
}
我希望在查询对象 A 时同时包含它们。
我尝试执行以下操作:
dbcontext.A.Include(x => x.B).ToList();
但是我如何也包含 C 呢?
【问题讨论】:
标签:
c#
linq
entity-framework
entity-framework-6
【解决方案1】:
试试这个
dbcontext.A.Include(x => x.B).Include(x => x.C).ToList();
我一次性完成所有操作,因此在我的 EF 存储库类中,我有一个名为 GetAllIncluding 的方法,它等于以通用方式对每个实体执行此操作,
public IQueryable<T> GetAllIncluding(params Expression<Func<T, object>>[] includes)
{
var query = DbSet.AsNoTracking();
query = includes.Aggregate(query, (current, includeProperty) => current.Include(includeProperty));
return query;
}
其中 DbSet 是 IDbSet 类型的私有成员,T 是 BaseEntity 类型的一个。
而我的使用方式是这样的
MyGenericRepository<A>().GetAllIncluding(x=> x.B, x=> x.C).FirstOrDefault();
希望对您有所帮助。