С сотрудниками и подчиненными - я хочу загрузить сотрудника количеством подчиненных в одном запросе.
public class Employee
{
public Name {get;set;}
public int NumberOfSubordinates {get;set;}
}
Получающийся SQL должен быть похожим:
select e.name, (select count(*) from subordinate s where s.employee_id = e.id) NumberOfSubordinates
from employee e
group by e.name
order by NumberOfSubordinates desc
Вы можете отобразить этот столбец как формулу.
Map(x => x.NumberOfSubordinates)
.FormulaIs(@"select count(*) from subordinate where subordinate.employee_id = id");
Другой подход - отобразить подчиненные как обратный мешок и использовать lazy = "extra". В этом случае Subordinates.Count
выполнит SQL count (*)
, но не как часть начальной загрузки. Этот подход может быть недоступен в Fluent.