[英]Get NHibernate QueryOver .SelectList(x) from Function
[英]NHibernate QueryOver get time from datetime property
我在SQL Server数据库中将日期和时间都保存为DateTime
,并且在映射中具有DateTime
属性。 在我的查询中,我需要分别访问日期和时间。 使用日期我没有问题,但是当尝试从DateTime获取时间时,出现以下错误:
附加信息:无法解析属性:TimeOfDay,属于:IWS.DataContracts.ServicesPlanning
节省时间在其他属性中并不是我想要的,即使我尝试过并且也无法使其正常工作。
使用QueryOver
查询:
Session.QueryOver<ServicesPlanning>()
.JoinAlias(x => x.TeamMember, () => stm)
.Where(() => stm.Id == _memberId)
.Where(x => (x.AllDay && (x.StartDate == _startDate && x.EndDate == _endDate)) ||
(!x.AllDay && x.StartDate.Date == _startDate && x.EndDate.Date == _endDate
&& (x.StartDate.TimeOfDay > _endTime.Value || x.EndDate.TimeOfDay < _startTime.Value)))
.RowCount() > 0;
用LINQ查询:
return Session
.Query<ServicesPlanning>()
.Where(x => x.TeamMember.Id == _memberId)
.Any(x => (x.AllDay && (x.StartDate.Date == _startDate && x.EndDate.Date == _endDate)) ||
(!x.AllDay && x.StartDate.Date == _startDate && x.EndDate.Date == _endDate && (x.StartDate.TimeOfDay > _endTime.Value || x.EndDate.TimeOfDay < _startTime.Value)));
查询的目的:检查是否已经计划了这个日期或时间,所以我们没有重叠。
任何帮助深表感谢!
为何不调整参数,而不是尝试操纵数据库中的内容进行比较?
如果您的数据库包含例如2016-01-01T08:00:00
作为日期,并且您想查询日期为2016-01-01
记录(无论时间如何),则可以查询“ 2016-01-01T00:00:00
”之间的日期2016-01-01T00:00:00
和2016-01-01T23:59:59
,像这样:
.Where(x => (x.AllDay && (x.StartDate == _startDate && x.EndDate == _endDate)) ||
(!x.AllDay && x.StartDate >= _startDate.Date && x.StartDate < _startDate.Date.AddDays(1))...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.