2010-01-27 38 views
3

昨晚我開始研究NHibernate提供者。我創建了幾條記錄匹配的條件,但是我只想返回最近的記錄(具有最大ID的記錄)。我認爲UniqueResult()會做到這一點,如果列表將被返回,否則不能使用它。NHibernate選擇符合標準的最新記錄

我理論上可以選擇完整列表然後返回所需的記錄,但我相信還有更好的辦法。

回答

4

您可以添加訂單嗎?

ICriteria cr = Session.CreateCriteria<MyType>(); 

cr.AddOrder(Order.Desc("Id")); 

MyType justone = cr.UniqueResult(); 
+0

是的,但我仍然返回一個列表。我只想獲得一個對象 – splatto 2010-01-27 21:37:32

+0

您可以與'UniqueResult()'結合使用。查看我的更新。 – Joel 2010-01-27 21:49:30

+0

你說得對,我誤解了速記。我會給你正確的答案,並將其留在下面,以便那些處於類似情況的人可以看到完整的方法體。謝謝! – splatto 2010-01-28 05:52:51

0

這裏最終是什麼要求。它實際上是我之前嘗試過的一些事情的組合。

MyObject mo = (MyObject)_session.CreateCriteria(typeof(MyObject)) 
       .Add(Restrictions.Eq("Property", value)) 
       .AddOrder(Order.Desc("Id")) 
       .SetMaxResults(1).UniqueResult(); 
      Log.Info(this, string.Format("Retrieving latest MyObject {0}.", mo.Name)); 
      return mo;