使用nhibernate,我将如何构造一个想要最近50行的查询

时间:2011-03-22 23:48:57

标签: c# nhibernate fluent-nhibernate

我有一个名为orders的表,我有一个名为Last Update的列(以及一个具有LastUpdate属性的订单对象)。我想使用nhibernate构造一个查询以获取最后50行,这样我就不会去数据库并获取所有内容,然后必须在我的应用程序中过滤结果。

这在nhibernate中是可能的。我正在尝试使用LINQ api

5 个答案:

答案 0 :(得分:4)

如果您使用的是Criteria,请使用SetMaxResults(50)并对日期时间进行降序排序。

答案 1 :(得分:4)

这是此查询的LINQ版本。

var orders = session.Query<Order>()
    .OrderByDescending(x => x.LastUpdate)
    .Take(50);

以下是代码示例的屏幕截图...

Code example

以下是NHibernate Profiler的屏幕截图...

NHibernate profiler example

答案 2 :(得分:1)

你可以使用SetMaxResults(50),虽然取决于你想要的50行(最新?最后?最后?)你也可能还需要做一个SortBy表达式。

答案 3 :(得分:1)

var orders = session.Query<Linq>()
    .OrderByDescending(x => x.LastUpdate)
    .Take(50);

答案 4 :(得分:1)

一般情况下,建议LastUdate可以使用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);
    }
}