我正在使用可返回特定实体集的通用方法。
public virtual IList<T> GetList(Func<T, bool> where,
params Expression<Func<T, object>>[] navigationProperties)
{
List<T> list;
using (var context = new eTRdataEntities())
{
IQueryable<T> dbQuery = context.Set<T>();
//Apply eager loading
foreach (Expression<Func<T, object>> navigationProperty in navigationProperties)
dbQuery = dbQuery.Include<T, object>(navigationProperty);
list = dbQuery
.AsNoTracking()
.Where(where)
.ToList<T>();
}
return list;
}
我有三个名为Domain,Term和Word的类。该域包含多个术语,术语可以包含许多Word实例。因此,它们被定义为Icollections
e.g。
public virtual ICollection<Terms> Terms{ get; set; }
我已经使用了以下命令:
IGenericDataService<Domain> domain_= new DataManagementService<Domain>();
IList<Domain> tempDom = domain_.GetList(o => o.OID.Equals("ABC"), d => d.Term);
这将返回域及其所有术语,但不会返回单词。
我需要知道的是如何调用此方法并指导它获取Term和Word(急切加载)。问题出现了,因为Domain有一系列术语,我不能称之为,
IList<Domain> tempDom = domain_.GetList(o => o.OID.Equals("ABC"), d => d.Term.Word);
请建议,
非常感谢
答案 0 :(得分:2)
Include
:
IList<Domain> tempDom = domain_.GetList(o => o.OID.Equals("ABC"),
d => d.Term.Select(t => Words));
另请参阅:Loading Related Entities。
顺便说一句,我会将Func where
参数更改为Expression<Func>>
。