我正在使用NHibernate联系遗留数据库,但是我遇到了MySql的零日期问题。
该列定义为DATETIME NULL
,但它将“null”值存储为空白日期。
我已将Convert Zero Datetime=true
添加到我的connectionstring中,因此现在所有值都转换为DateTime.MinValue
。另一方面。似乎NHibernate不理解这一点,并且在查询时不会将DateTime.MinValue
转换为空白的MySql日期时间。
// So this query always returns a blank result.
Where(x => x.SomeDateTime == DateTime.MinValue)
// And so does this
Where(x => x.SomeDateTime == null)
我想过将MySqlDateTime
直接用于这些字段,但这很简单,我需要自己实现算法。
我知道如何才能优雅地处理这个问题吗?
答案 0 :(得分:0)
与NULL比较与使用IS NULL
测试不同。数据库实际上并没有在其中放置空值,它在另一个(隐藏)字段中设置了一个标志。
Where(x => x.SomeDateTime is null)