【发布时间】:2011-06-30 20:16:22
【问题描述】:
我有一个连接 DriverImages 的表 DriverScans。我想返回所有 DriverScans,其中任何 DriverImage 的 Sent 字段等于 false。
基本上
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();
【问题讨论】:
标签: nhibernate criteria