我想选择一位有薪酬信息的员工。
在数据库中,员工表与薪酬信息有一对多的关系,因此我必须选择序列最高的员工。
这个SQL工作正常,但我想在NHibernate中这样做:
SELECT ID,
EmployeeId,
EmployeeCode,
PayI.IsHourly,
PayI.Sequence
FROM Employee as E
CROSS APPLY
(select top 1 PayI.IsHourly,PayI.Sequence
from PayInformation as PayI
Where PayI.EmployeeId=E.EmployeeId
order by PayI.Sequence desc
) AS PayI
Where E.EmployeeId=@EmployeeId
我知道我可以使用标准,因为我用它来过滤EmployeeId的记录,但我不知道如何在NHibernate中使用Cross Apply。
NHibernate.ICriteria criteria = BmDaoSession.SessionFactory.OpenSession()
.CreateCriteria(typeof(Employee));
criteria.Add(Expression.Eq("EmployeeId", employeeId));
return criteria.List<Employee>()[0];