Subsonic 3, SimpleRepository, SQL Server:Как найти строки с пустым полем?
-
12-09-2019 - |
Вопрос
Как я могу использовать Subsonic Find<T>
метод для поиска строк с полем, содержащим значение «null».Для обсуждения предположим, что у меня есть класс C # под названием «Посещение», который содержит поле DateTime с нулевым значением, называемое «SynchronizedOn», а также предположим, что в ходе дозвуковой миграции создана соответствующая таблица «Посещения» и поле «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>
метод.
Кто-нибудь знает, как я могу указать условие «SynchronizedOn IS NULL» в Find<T>
метод?
Решение
Вы можете использовать:
var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();