2011-12-06 3 views
1

NH DetachedCriteriaを使用してこのSQL文を再現しようとしていますが、3つの内部結合文がすべて機能するように苦労しています。NHibernateは3つの内部結合テーブルを持つ基準を作成します

SELECT a.* 
FROM TableA a 
INNER JOIN TableB b ON a.ProjectID = b.ProjectID 
INNER JOIN TableC c ON b.OutlineAgreementID = c.OutlineAgreementID 
INNER JOIN TableE e ON a.estimateid = e.estimateid 
WHERE (b.ArchiveStatusID = 1) 
AND (b.DateDeleted IS NULL) 
AND (c.OutlineAgreementID = 14) 
AND (e.PaymentStatusID = 5) 
AND (e.TransferStatus = 1 OR e.TransferId IS NULL) 

助けていただければ幸いです。

+0

内部結合が正しい。何が問題ですか? –

+0

NHのDetachedCriteria構文への変換が問題であるのはSQLではありません – Tim

答えて

0
var query = DetachedCriteria.For<A>() 
    .CreateAlias("Estimate", "estimate") 
     .Add(Restrictions.Eq("estimate.PaymentStatus.Id", 5)) 
     .Add(Restrictions.Eq("estimate.TransferStatus", null) || Restrictions.Eq("estimate.TransferStatus", TransferStatus.WhateverIs1)) 
    .CreateCriteria("Project", JoinType.InnerJoin) 
     .Add(Restrictions.Eq("ArchiveStatus.Id", 1)) 
     .Add(Restrictions.Eq("DateDeleted", null)) 
     .Add(Restrictions.Eq("OutlineAgreement.Id", 14)) 
    .List<A>();