Как сопоставить счет коллекции с сущностью с помощью fluent-nhibernate - PullRequest
9 голосов
/ 20 февраля 2010

С сотрудниками и подчиненными - я хочу загрузить сотрудника с количеством подчиненных в одном запросе.

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

1 Ответ

15 голосов
/ 20 февраля 2010

Вы можете отобразить этот столбец как формулу.

Map(x => x.NumberOfSubordinates)
    .FormulaIs(@"select count(*) from subordinate where subordinate.employee_id = id");

Другой подход состоит в том, чтобы отобразить подчиненных как обратный пакет и использовать lazy = "extra" В этом случае Subordinates.Count будет выполнять SQL count(*), но не как часть начальной загрузки. Этот подход может быть еще не доступен в свободном доступе.

...