entity-framework – EF – 为什么不包含属性的工作

所以我的课程看起来像这样.

public class User {
    public virtual IList<Member> Members {get;set;}
}

public class Member {
    public virtual AnotherTable Another {get;set;}
}

public class AnotherTable {
    public string Name {get;set;}
}

当我直接对DataContext执行查询时Include工作,但是当我在成员的IList上执行AsQueryable()时,include不起作用.

有没有办法在延迟加载的属性上使用Include / Eager功能,例如上面的Members属性,或者我是否总是需要通过DataContext来获取该功能?

User.Members.AsQueryable().Include(a => a.Another).ToList() // <-- nada, no way Jose
_db.Members.Include(m => m.Another).ToList() // <-- all good in the neighborhood

我问因为它可能是1 sql查询与100个查询的巨大差异,因为结果等效.

提前致谢.

最佳答案 AsQueryable不会使它成为linq-to-entities查询.它仍然是List上的Linq-to-object查询. List不知道如何处理Include – 只有DbQuery知道它所以你必须得到DbQuery:

var entry = context.Entry(user);
entry.Collection(u => u.Member).Query().Include(m => m.Another).Load();
点赞