【问题标题】:Nhibernate add filter to queryNhibernate将过滤器添加到查询
【发布时间】:2013-05-08 09:27:45
【问题描述】:

参考:nhibernate criteria for selecting from different tables

基于这个问题,我想通过示例 Unit.Amount == 5 过滤检索到的最后 5 个订单! (添加过滤器)我认为可以这样:

var query = m_hibernateSession.QueryOver<Model.Order>()
// .Where(x => x.Units[].Amount == 5) ... // which Unit to select in this list?
.OrderBy(x => x.PONumber).Desc.Take(5);

有人可以帮我找到正确的查询吗?

谢谢

【问题讨论】:

    标签: c# sql hibernate sqlite nhibernate


    【解决方案1】:

    使用连接应该可以解决您的问题

    Order orderAlias = null;
    Unit unitsAlias = null;
    var query = session.QueryOver<Order>(() => orderAlias)
      .JoinAlias(() => orderAlias.Units, () => unitsAlias, JoinType.InnerJoin)
      .Where(() => unitsAlias.Amount == 5)
      .OrderBy(x => x.PONumber).Desc.Take(5);
    

    【讨论】:

    • 您可以创建一个 QeryOver() 并提取您需要的内容
    • 我试过了: var query = m_hibernateSession.QueryOver( () => unitsAlias ) .JoinAlias(() => unitsAlias.OrderRef, () => orderAlias, JoinType.InnerJoin ) .Where(() => unitsAlias.Amount == 5) .OrderBy(x => x.PONumber).Desc.Take(amount);但收到错误消息:“无法解析属性:PONumber of: DCGOrderSystem.Model.Unit”
    • 插入 x=>xPONumber try () => orderAlias.PONumber
    • 你是最棒的。非常感谢!
    猜你喜欢
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多