2011-06-15 9 views
3

Nhibernate Criteria APIを使用してクエリを再現しようとしていますが、異なるテーブルの2つの値を比較するための条件句を追加する方法を試すことができません。作成したエイリアスのNhibernate With Clause使用法

私が思い付くことができる最高の簡単な例....

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); 

一つの過負荷は思わ「withClause」の追加のパラメータを持っていますこれを達成するための示唆された方法であることが私の人生のために私はこれを達成するために必要な構文の例を見つけることができません。

私は

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

...の線に沿って何かを必要とするが、2番目のパラメータは文字列の値として処理されるように、これは明らかに動作しませんと思います。

助けてください。

答えて

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()制約は、お互いに2つのプロパティを比較して探しているものです。

関連する問題