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

以下は、投稿のタイトルからの質問への回答です。

エンティティ フレームワーク コードの最初の流暢な API で Single() が使用されている場合、Include() が使用できない理由

.Include()type を期待する Linq-To-Entities の拡張メソッドですIQueryable

指定した場合、db.Teachers.Include()またはdb.Teacher.Where().Include()この要件を満たしている場合は、 と の両方がtypedb.Teachersdb.Teachers.Where()返しIQueryableます。

しかし、それを指定すると、 の使用には機能しないdb.Teachers.Single()戻り値の型になります。TeacherInclude()

于 2015-03-27T00:35:40.013 に答える