【发布时间】:2013-12-11 16:15:35
【问题描述】:
给出下一个模型:
public class User{
public int IdUser { get; set;}
public virtual ICollection<Project> Projects { get; set;}
public virtual ICollection<Exam> Exams { get; set;}
}
public class Project{
public int IdProject { get; set;}
public bool Current { get; set;}
public virtual User { get; set;}
}
public class Exam{
public int IdExam { get; set;}
public int score { get; set;}
public virtual User { get; set;}
}
我需要从一个 current=true 和 exams 获得 score 大于 4给定用户。
当我需要过滤导航属性时,为了避免将所有记录带入内存并将过滤器应用到内存中,我会执行以下操作:
IQueryable<Project> = context.Entry(user).Collection(x => x.Projects).Query().Where(n => n.Current).ToList();
这样,我只从数据库中获取当前项目。避免将所有项目检索到内存然后在内存上应用过滤器的其他方式。
所以现在,我也想做同样的事情(只带重要的记录),但我不知道当我有多个集合时该怎么做。
你能帮帮我吗?谢谢!
【问题讨论】:
-
我认为您仍在检索完整数据集,因为您尚未删除虚拟关键字 stackoverflow.com/a/20358097/150342
标签: .net entity-framework ef-code-first