Subsonic 3, SimpleRepository, SQL Server:Как найти строки с пустым полем?

StackOverflow https://stackoverflow.com/questions/1249944

Вопрос

Как я могу использовать 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top