我目前正在重构一些使用实体框架的代码。Linq任何()实体框架的副作用
我真的搞不清楚为什么有人叫Entities.Any()
,它看起来是随机的,但评论说它被用来覆盖延迟加载的值。对我来说这仍然没有意义,因为调用Any()
不应修改底层集合。
删除此声明我应该感到满意吗?
的代码看起来是这样的:
class MyEFObject {
public virtual ICollection<Entity> Entities { get; set; }
public void SetEntities(ICollection<Entity> entities)
{
// [...]
Entities.Any(); // to override lazyloaded values
Entities = entities.Where(a => a.MyEFObjectId == Id).ToList();
// [...]
}
}
当然没有测试,所以我无法验证预期的行为是什么。
看看这篇文章https://www.tutorialspoint.com/entity_framework/entity_framework_lazy_loading.htm –
'实体'似乎是一个内存中的集合,即将被替换。 'Any()'只会检查该集合中是否至少有一个项目(然后丢弃结果)。我看不出有任何影响。 –
我不会删除该代码。 'Any'在这里不是必须的('GC.KeepAlive(Entities);'或者类似的伪方法会有相同的效果) - 关键是调用Entities'属性* getter *。 –