【问题标题】:nhibernate, Retrieve the latest row in a tablenhibernate,检索表中的最新行
【发布时间】:2010-04-25 21:19:19
【问题描述】:

一个用户可以有多个地址,但我想检索该用户的最新条目。

在 sql 中我会这样做:

SELECT TOP 1 *
FROM UserAddress
WHERE userID = @userID

如何创建具有相同逻辑的条件查询?

有 TOP 功能吗?

【问题讨论】:

    标签: c# asp.net nhibernate


    【解决方案1】:

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

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

    【讨论】:

    • 这样可以吗? .SetMaxResults(1).UniqueResult(); ?
    • 是的。只有一排:)
    【解决方案2】:

    由于表格内容的顺序会发生变化(重新索引等),我建议您使用一些描述的时间戳来指示哪个是最新的。然后获取按该字段排序的第一个。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多