我有一個訂單表叫和我有一個所謂的最後更新列(並用LASTUPDATE財產的訂單對象)的查詢。我想用nhibernate構造一個查詢來獲得最後50行,所以我不去數據庫並獲取所有內容,然後必須在我的應用程序中篩選結果。,我如何構建想要最新的50行
這是可能的NHibernate的。我想如果你使用的是標準,然後使用SetMaxResults(50)和做的日期時間降序排序使用LINQ API
我有一個訂單表叫和我有一個所謂的最後更新列(並用LASTUPDATE財產的訂單對象)的查詢。我想用nhibernate構造一個查詢來獲得最後50行,所以我不去數據庫並獲取所有內容,然後必須在我的應用程序中篩選結果。,我如何構建想要最新的50行
這是可能的NHibernate的。我想如果你使用的是標準,然後使用SetMaxResults(50)和做的日期時間降序排序使用LINQ API
下面是該查詢的LINQ版本。
var orders = session.Query<Order>()
.OrderByDescending(x => x.LastUpdate)
.Take(50);
下面的代碼示例的屏幕截圖...
下面是從NHibernate的探查器屏幕截圖...
你可以使用SetMaxResults(50)
,雖然取決於你想要的50行(最新的?first?last?),你可能還需要做一個SortBy表達式。
var orders = session.Query<Linq>()
.OrderByDescending(x => x.LastUpdate)
.Take(50);
在一般情況下建議LastUdate
c使用Linq2SQL可以爲空,你可以在你的IQueriable中寫入擴展方法:
public static partial class FooTable
{
public static IQueryable<FooTable> LastUpdated(this IQueryable<FooTable> queryable, int count)
{
return queryable.Where(x => (x.LastUdate != null))
.OrderByDescending(x => x.LastUdate)
.Take(count);
}
}
試過了,它似乎沒有在數據庫級別執行過濾器。當我運行nhibernate分析器時,我發現它返回了所有的記錄。 – leora 2011-03-23 00:06:57
我想你想session.Linq() –
2011-03-23 00:09:32
NHibernate的3.0.0.4000,這增加了頂(50)到SQL Server。和LINQ的()語法已取代查詢()。探測器即將推出的照片。 –
2011-03-23 00:50:39