【发布时间】:2011-10-20 12:13:02
【问题描述】:
我有基于 3 个数据库表的三个实体(关系下方的基数)。
Pupil - SchoolClass - ClassType
N:1 1:1
我想获取学生列表并更新他们的标量属性Grade。
成绩取决于学生参加的班级类型。所以我还需要每个 Pupil 的 ClassType。
这就是我的工作:
var pupils = from pupil in db.Pupils.Include("SchoolClass.ClassType")
select pupil;
foreach(Pupil p in pupils)
p.Grade *= p.SchoolClass.ClassType.GradingFactor;
这样做的问题是 SchoolClass 被加载到上下文中,所有标量属性都填充了(+外键 ID)。
有没有办法跳过 Pupil 和 ClassType 实体之间的对象?也就是说,只加载 SchoolClass 的 ClassType 导航属性?
在没有 Include 的情况下加载所需的学生数量是 20 毫秒,在 Include 情况下是 250 毫秒。我想知道这是否可以优化?
【问题讨论】:
标签: c# entity-framework navigation-properties