gpt4 book ai didi

c# - 在延迟加载的集合导航属性中调用 .Any() 会枚举该属性吗?

转载 作者:行者123 更新时间:2023-11-30 15:24:45 25 4
gpt4 key购买 nike

考虑以下实体:

public class Principal
{
[Key,DatabaseGenerated]
public int ID{ get; set; }

[Key,DatabaseGenerated]
public virtual ICollection<Dependent> Dependents { get; set; }
}

public class Dependent
{
[Key]
public int PrincipalID { get; set; }

[ForeignKey("PrincipalID")]
public virtual Principal Principal { get; set; }
}

在以下场景中:

var principal = db.Principals.First();

if( principal.Dependents.Any()){
// Do stuff
}

对 .Any 的调用是否会检索依赖实体,或者 EF 是否足够智能以在存储中执行 Exists 而不是检索相关记录并对可枚举执行 .Any()?

最佳答案

由于 Dependents 导航属性不是 IQueryable(并且 EF 不支持导航属性上的 IQueryable),一旦加载,整个导航属性数据被执行和具体化,并且将使用 Enumerable.Any (Linq-to-Objects) 调用进一步的 LINQ 调用。

关于c# - 在延迟加载的集合导航属性中调用 .Any() 会枚举该属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32384226/

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