2010-04-25 25 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

由於表格內容的排序可能會發生移動(重新編排等),所以我建議您有一些描述的時間戳以表明哪一個是最新的。然後獲取該字段排序的第一個。