1

我想知道为什么在 Single() 之后不能在急切加载中使用 Include()。例如,在以下代码段中,Include 不可用:

db.Teachers.Single(p => p.Id == currUserId)
           .Include(t => t.OfferedCourses)
           .RegisteredCourses
           .ToList();

但是,如果我在 Include() 之后有 Single(),它会起作用:

db.Teachers.Include(t => t.OfferedCourses)
           .Single(p => p.Id == currUserId)               
           .RegisteredCourses
           .ToList();

这样会返回很多不必要的相关数据。以下是我最终使用的方法:

 db.Teachers.Where(p => p.Id == currUserId)
            .Include(t => t.OfferedCourses)
            .First()
            .RegisteredCourses
            .ToList();

这是唯一的解决方案吗?

4

1 回答 1

1

以下是从帖子标题中对您的问题的回答:

为什么在实体框架代码第一个fluent api中使用Single()时Include()不可用

.Include()是 Linq-To-Entities 中需要 type 的扩展方法IQueryable

当您指定db.Teachers.Include()db.Teacher.Where().Include()满足此要求时,因为两者都db.Teachers返回db.Teachers.Where()类型IQueryable

但是,当您指定db.Teachers.Single()返回类型时,该类型Teacher不适用于Include().

于 2015-03-27T00:35:40.013 回答