entity-framework - EF - 为什么不包括对属性的工作

标签 entity-framework c#-4.0 orm entity-framework-4.1

所以我有看起来像这样的类(class)。

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 不起作用。

有没有办法在延迟加载的属性(例如上面的 Members 属性)上使用 Include/Eager 功能,或者我是否总是必须通过 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();

关于entity-framework - EF - 为什么不包括对属性的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7391273/

相关文章:

java - 如何使用JPA从自引用实体中的某个级别选择子实体?

entity-framework - 为什么 EF Code First [InverseProperty] 属性在与 [ForeignKey] 属性一起使用时无法工作?

c# - 多对可选关系是否可能?

.net - 我如何使用单声道 objective-c #/.net 4 进行编译

c# - VSTO Outlook 插件需要保存设置,最好的方法是什么?

java - Grails - 保存域对象时 - 我收到 "rejected value [null] error"

javascript - 从服务器到客户端的 UTC 偏移量

c# - 违反了多重约束 Entity Framework 5

.net - 合并不同类型的 .NET 4.0 任务/延续

java - 使用 Hibernate 生成 Create_Date 和 Update_Date 列