gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:09:09 25 4
gpt4 key购买 nike

所以我有看起来像这样的类(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com