我有一個表DriverScans加入DriverImages。我想返回所有DriverScan,其中有DriverImage的Sent字段等於false。nhibernate加入條件幫助
本質
SELECT DriverScan.*
FROM DriverScan
INNER JOIN DriverImages
ON DriverImages.DriverScanId = DriverScan.DriverScanId
WHERE DriverImages.Sent = 0
下面的代碼只DriverScans但創建SQL查詢拉回內部聯接DriverScan和DriverImages,它包括一個圖象場的。如何編寫代碼以便SQL僅返回DriverScan信息?
public IEnumerable<DriverScan> GetNewScans()
{
var session = GetCleanSession();
var query = session.CreateCriteria(typeof(DriverScan));
query.CreateCriteria("DriverImages", JoinType.InnerJoin)
.Add(Cr.Restrictions.Eq("Sent", false));
return query.List<DriverScan>();
}
如果有關我的DriverImages映射
HasMany<DriverDoc>(x => x.DriverDocs)
.WithKeyColumn("DriverScanId").IsInverse()
.Cascade.AllDeleteOrphan().LazyLoad();
我該怎麼做?這是使用CreateSQLQuery?當我使用CreateSQLQuery它工作但它不能將列表
你可以使用Session.CreateQuery(query).ToList()。讓我知道你是否需要更多信息。 –
TheITGuy
完美工作,HQL看起來像一個真正簡單的方式來編寫查詢。 – strattonn