У меня есть объект 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.)