如何使用Fluent-nhibernate将集合计数映射到实体

时间:2010-02-20 02:14:12

标签: nhibernate collections fluent-nhibernate

对于员工和下属 - 我想在一个查询中加载具有下属数量的员工。

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 个答案:

答案 0 :(得分:15)

您可以将此列映射为公式。

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

另一种方法是将Subordinates映射为反向包并使用lazy =“extra”。在这种情况下,Subordinates.Count将执行SQL count(*),但不会作为初始加载的一部分。这种方法可能尚未在Fluent中提供。