【发布时间】:2010-11-30 19:51:41
【问题描述】:
我有一个实体A,带有一个简单的导航属性B。对于A 的任何给定实例,我们预计会有数千个相关的B 实例。
我不会这样称呼:
foreach(var x in A.B) { ... }
相反,我只对进行聚合操作感兴趣,例如
var statY = A.B.Where(o => o.Property == "Y");
var statZ = A.B.Where(o => o.CreateDate > DateTime.Now.AddDays(-1));
据我所知,EF 实例化了数千个对 B 的引用并在内存中执行这些操作。这是因为导航属性使用 EntityCollection。相反,如果可能,我希望它在 SQL 级别执行这些查询。
我目前的预感是导航属性可能不是正确的方法。我不依赖 EF,所以我对其他方法持开放态度。但如果可能的话,我很想知道在 EF 下执行此操作的正确方法。
(我正在使用 EF4。)
【问题讨论】:
标签: entity-framework iqueryable