带子句用法的Nhibernate

带子句用法的Nhibernate,nhibernate,criteria-api,Nhibernate,Criteria Api,我试图使用Nhibernate Criteria API重现一个查询,但无法确定如何添加一个Criteria子句,该子句允许我比较不同表中的两个值 我能想到的最简单的例子 SELECT e.LastName FROM Employee e JOIN Chair c ON c.ChairId = e.ChairId WHERE e.Weight > c.MaxLoad 我的基本Nhibernate标准 ICriteria criteria = base.Session.CreateCrit

我试图使用Nhibernate Criteria API重现一个查询,但无法确定如何添加一个Criteria子句,该子句允许我比较不同表中的两个值

我能想到的最简单的例子

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"));
但这显然不起作用,因为第二个参数将作为字符串值处理

感谢您的帮助。

var employeeNames=Session.CreateCriteria(typeof(Employee))
var employeeNames = Session.CreateCriteria(typeof(Employee))
    .CreateAlias("Chair", "c") // InnerJoin is implied
    .Add(Restrictions.GtProperty("Weight", "c.MaxLoad"))
    .SetProjection(Projections.Property("LastName"))
    .List<string>();
.CreateAlias(“Chair”,“c”)//暗示了InnerJoin .Add(限制.GtProperty(“重量”、“c.MaxLoad”)) .SetProjection(Projections.Property(“LastName”)) .List();
Restrictions.XxProperty()
约束就是您要寻找的,它将两个属性相互比较