针对 DateTime 属性的流畅 NHibernate 查询问题
我正在尝试使用 where 子句针对 DateTime 检索行。
注意:Query
是来自 ISession.Query
扩展的 IQueryable
。
var results = Query
.Where(row => row.TimeStampUtc == timeStampUtc);
这不会返回任何结果。
var results = Query.ToList()
.Where(row => row.TimeStampUtc == timeStampUtc);
这会返回结果。(通过使用 ToList(),我可以避免使用 NHibernate 查询提供程序)。
我缺少什么技巧?
更新:
SQL 探查器告诉我,它正在查询
where row.TimeStampUtc = '2011-01-28T09:28:55.00' /* @p0 */
,但实际列值是 '2011-01-28 09:28:55.987'
因此没有匹配项。
在映射(大概是读取)过程中的某个地方,我丢失了亚秒数据。
I'm trying to retrieve a row using a where clause against a DateTime.
Note: Query
is an IQueryable
from ISession.Query
extension.
var results = Query
.Where(row => row.TimeStampUtc == timeStampUtc);
This returns no results.
var results = Query.ToList()
.Where(row => row.TimeStampUtc == timeStampUtc);
This returns results. (By using ToList() im avoiding the NHibernate query provider).
What trick am I missing?
Update:
SQL profiler tells me that its querying for
where row.TimeStampUtc = '2011-01-28T09:28:55.00' /* @p0 */
but the actual column value is '2011-01-28 09:28:55.987'
hence no matches.
Somewhere during mapping (presumably reading) I am losing the sub-second data.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该问题是由于该列被用作
CompositeId
的一部分而引起的。我无法单独在列上使用
CustomType
,因为如果该列也被定义为CompositeId
的一部分,则它会被忽略。解决方案是在
KeyProperty
定义上使用Type
方法。The problem was caused by the fact the column was used as part of a
CompositeId
.I could not use
CustomType
on the column alone, because its ignored if the column is also defined as part of aCompositeId
.The solution is the use the
Type
method on theKeyProperty
definition.