2010-04-25 62 views
0

用户可以有很多地址,但我想为用户检索最新的条目。nhibernate,检索表格中的最新行

在SQL我会做:

SELECT TOP 1 * 
FROM UserAddress 
WHERE userID = @userID 

我怎样才能创建一个具有相同的逻辑条件查询?

是否有TOP功能?

回答

4

假设你有一些时间戳列(如InsertedAt):

User user = ...; 
    var crit = DetachedCriteria.For<UserAddress>() 
     .Add(Restrictions.Eq("User", user)) 
     .AddOrder(Order.Desc("InsertedAt")) 
     .SetMaxResults(1); 
+0

woudl这行吗? .SetMaxResults(1).UniqueResult (); ? – Blankman 2010-04-25 21:47:41

+0

是的。只有一行:) – dariol 2010-04-25 21:56:57

1

This post有答案如何做到这一点,但你不应该总是依靠TOP获取最新的条目! (假设按时间顺序排列)

使用时间/索引列根据时间戳记值获取最新条目。

1

由于表格内容的排序可能会发生移动(重新编排等),所以我建议您有一些描述的时间戳以表明哪一个是最新的。然后获取该字段排序的第一个。