我需要在SQL之后使用nhiberante查询(而不是HQL):
SELECT ur.*
FROM (SELECT MAX(requestTime) rt, macAddress ma
FROM UpdateRequests
GROUP BY macAddress) mur
JOIN dbo.UpdateRequests ur
ON mur.ma = ur.macAddress AND mur.rt = ur.requestTime
我对stackoverflow上的其他类似示例没有运气。 有了UpdateRequest映射,似乎查询API无法实现,QueryOver怎么样?
答案 0 :(得分:1)
最后,一位Guru建议我在不改变执行计划的情况下更改SQL查询:
SELECT ur.*
FROM [dbo].[UpdateRequests] AS ur
WHERE ur.[RequestTime] = (SELECT MAX(mur.[RequestTime])
FROM [dbo].[UpdateRequests] mur
WHERE mur.[MacAddress] = ur.[MacAddress])
因此在代码中它转换为:
session
.Query<UpdateRequest>()
.Where(ur => ur.RequestTime == session.Query<UpdateRequest>()
.Where(mur => mur.MacAddress == ur.MacAddress)
.Max(mur => mur.RequestTime))
.ToList();
这正是我所需要的。