Здравствуйте, Sinclair, Вы писали:
S>А можешь показать, какой SQL генерится в том и том случаях?
Да все просто как рельс — нужно через left join выбрать одну большую простыню заказов и продуктов в заказах, а дальше в памяти разобрать по объектам.
Только EF, для своих внутренних нужд, еще вкрячивает дополнительный столбец типа CASE WHEN (Product.ID IS NULL) THEN CAST(NULL as int) ELSE 1 END as C1,
оборачивает это в еще один внешний запрос и сортирует результат — ORDER BY Order.Id ASC, C1 ASC
Стоимость этой операции увеличивает общую стоимость запроса больше чем в два раза. И есть у меня стойкое подозрение, что это упражнение EF проделывает с каждым left join-ом.