我正在使用实体框架代码优先方法,下面是我在某些条件下从中检索数据的表。
public class Case
{
public int CaseId { get; set; }
public string Name { get; set; }
public DateTime StartDateTime { get; set; }
public DateTime? EndDateTime { get; set; }
public virtual ICollection<CaseUser> CaseUsers { get; set; }
public virtual ICollection<Sector> Sectors { get; set; }
public virtual ICollection<CasePoaSerie> CasePoaSeries { get; set; }
public virtual ICollection<Pod> Pods { get; set; }
public virtual ICollection<Poa> Poas { get; set; }
public Case()
{
CaseUsers = new Collection<CaseUser>();
Sectors = new Collection<Sector>();
CasePoaSeries = new Collection<CasePoaSerie>();
Pods = new Collection<Pod>();
Poas = new Collection<Poa>();
}
}
存储库功能:
public List<Case> GetActiveCasesForUser(int userId)
{
var queryable = DbSet.Include(x => x.CaseUsers);
queryable = queryable.Where(x => x.CaseUsers.Any(o => o.UserId == userId));
queryable = queryable.Where(m => m.StartDateTime <= DateTime.Now && (m.EndDateTime == null || m.EndDateTime <= DateTime.Now));
return queryable.ToList();
}
问题:
在结果集中,我只需要有关case表和caseusers表的数据,但是结果包含所有相关表的数据,包括不需要的扇区,casepoaseries,pod,poa。
有人可以帮助我,以便我的结果集中只有主表内容和caseusers表的内容,其余表的计数应该为0。
答案 0 :(得分:0)
实体框架中的延迟加载
延迟加载会延迟相关数据的加载,直到您明确要求为止。这与渴望加载相反。
延迟加载规则:
在实体框架中快速加载
热切加载是一种过程,在该过程中,对一种类型的实体的查询也将相关实体作为查询的一部分进行加载,因此我们无需对相关实体执行单独的查询。使用Include()方法可以实现更早的加载。