【问题标题】:Nhibernate With Clause Usage使用子句休眠
【发布时间】:2011-09-15 20:15:38
【问题描述】:

我正在尝试使用 Nhibernate Criteria API 重现查询,但无法弄清楚如何添加允许我比较来自不同表的两个值的条件子句。

我能想到的最好的简单例子......

SELECT e.LastName
FROM Employee e
JOIN Chair c ON c.ChairId = e.ChairId
WHERE e.Weight > c.MaxLoad

我的基本 Nhibernate 标准

ICriteria criteria = base.Session.CreateCriteria(typeof(Employee));
criteria.CreateAlias("Employee.Chairid", "Chair", JoinType.InnerJoin);

create alias 的一个重载有一个额外的参数“withClause”,这似乎是实现这一点的建议方法,但在我的一生中,我找不到实现这一点所需的语法示例。

我想我需要一些类似...的东西

criteria.Add(Expression.Ge("Employee.Weight", "Chair.MaxLoad"));

但这显然不起作用,因为第二个参数将作为字符串值处理。

任何帮助表示赞赏。

【问题讨论】:

    标签: nhibernate criteria-api


    【解决方案1】:
    var employeeNames = Session.CreateCriteria(typeof(Employee))
        .CreateAlias("Chair", "c") // InnerJoin is implied
        .Add(Restrictions.GtProperty("Weight", "c.MaxLoad"))
        .SetProjection(Projections.Property("LastName"))
        .List<string>();
    

    Restrictions.XxProperty() 约束是您正在寻找的,它将两个属性相互比较。

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2017-04-25
      • 2017-06-22
      相关资源
      最近更新 更多