我如何使用 Subsonic 的Find<T>
方法来搜索包含“null”值的字段的行。为了便于讨论,假设我有一个名为“Visit”的 ac# 类,其中包含一个名为“SynchronizedOn”的可为空的 DateTime 字段,还假设 Subsonic 迁移已创建相应的“Visits”表和“SynchronizedOn”字段.
如果我要自己编写 SQL 查询,我会编写如下内容:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
当我使用以下代码时:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
Subsonic 将其转换为以下 SQL 查询:
SELECT * FROM Visits WHERE SynchronizedOn == null
它从不返回任何行。
我尝试了以下代码,但它引发了错误:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
我能够使用以下语法:
var query = from v in repository.All<Visit>()
where v.SynchronizedOn == null
orderby v.CreatedOn
select v;
visits = query.ToList<Visit>();
但它不如使用该Find<T>
方法那么好。
任何人都知道我如何在Find<T>
方法中指定“SynchronizedOn IS NULL”条件?