通过导航属性从集合对象中删除对象时,我遇到了严重的性能问题。调用 EntityCollection.Remove 需要 8 分钟 (!!!!) 才能完成
详细信息:CollectionObject X 有 65.000 个对象。只有其中一个应该从集合中删除。
没有太多自己的代码涉及,即 EntityCollection 是通过(生成的代码)创建的
RelationshipManager.GetRelatedCollection<...>(<relationShipName>, <targetRoleName>)
而实际的 Remove 只是一个调用
EntityCollection<Type>.Remove
我怀疑 EntityFramework 在执行实际删除之前会加载所有 65.000 个对象。然而,到目前为止,我还无法证明这个假设。
有任何想法吗?
谢谢弗兰克
附加信息:我发现这个有用的链接: EF 构建 EntityCollection,但我(我认为我)想要 IQueryable 问题的真正原因是 EntityCollection 在执行删除时的行为。
我找到了一种解决方法并使用关系的较小端,即当我想删除从对象 A 到对象 B 的关系时,当对象 A 有 65000 个对象时,我从对象 B 端删除关系,其中性能没关系,因为对象 B 仅与例如 10 个对象相关。显然,这不是该问题的令人满意的通用解决方案。