我的目标是从连接在一起的两个表中获取两个值并执行比较,如果为真,则输出表 1 中的行。下面的 TSQL 代码说明了查询,问题是是否有办法在 where 中执行第三个谓词使用 NHibernate 条件的子句使用 session.CreateCriteria:
declare @currentSystemTime datetimeoffset = '2015-07-22 18:42:16.1172838 +00:00'
select
inst.ExpiryDate,
ent.DaysToExpiryNotificationStart,
convert(date, dateadd(day, -ent.DaysToExpiryNotificationStart, inst.ExpiryDate)) as NotificationStart,
convert(date, @currentSystemTime) as CurrentSystemTime,
*
from
Instances inst
inner join Entries ent on inst.Entry_id = ent.Id
where
inst.ExpiryDate is not null
and ent.DaysToExpiryNotificationStart is not null
and convert(date, @currentSystemTime) >= convert(date, dateadd(day, -ent.DaysToExpiryNotificationStart, inst.ExpiryDate))
实体类中的属性定义如下:
public virtual DateTimeOffset? ExpiryDate { get; set; }
public virtual int? DaysToExpiryNotificationStart { get; set; }
我正在使用 Fluent NHibernate 来映射这些。通过 CreateQuery 或 CreateSQLQuery 进行手动查询是唯一的方法吗?如果有更简单的方法来完成这项任务,我很乐意。任何帮助将不胜感激。
谢谢,肖恩