我刚接触nHibernate,并继承了一个实现它以访问其数据库的项目。到目前为止,我已经能够使用QueryOvery<>编写额外的单表查询方法,但我发现表连接背后的逻辑令人困惑。
我想实现以下T-SQL查询:
SELECT DISTINCT f.FILE_ID, f.COMPANY_ID, f.FILE_META_ID, (etc...)
FROM AUDIT.FILE_INSTANCE f
INNER JOIN AUDIT.FILE_INSTANCE_REPORTING_PERIOD p ON p.FILE_ID = f.FILE_ID
WHERE p.REPORTING_PERIOD_ID BETWEEN 20150101 AND 20151304
AND FILE_STATUS != 'CANCELLED';
在此示例中,报告期间ID将是参数。请注意它们是整数,而不是日期,DISTINCT子句很重要。我该怎么办?
答案 0 :(得分:0)
我不知道你的课程,但如果我会写它,它会是这样的:
var results = session.QueryOver<FileInstance>()
.Where(fi => fi.Status == FileStatus.Canceled)
.JoinQueryOver(fi => fi.ReportingPeriods)
.WhereRestrictionOn(period => period.Id).Between(20150101, 20151304)
.Transform(Transformers.DistinctRootEntity)
.List();