Subsonic 3, SimpleRepository, SQL Server: как найти строки с нулевым полем? - PullRequest
3 голосов
/ 09 августа 2009

Как можно использовать метод Subsonic Find<T> для поиска строк с полем, содержащим значение «null». Для обсуждения давайте предположим, что у меня есть класс ac # с именем «Visit», который содержит обнуляемое поле DateTime с именем «SynchronizedOn», а также давайте предположим, что при дозвуковой миграции созданы соответствующая таблица «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>.

Кто-нибудь знает, как я могу указать условие "SynchronizedOn IS NULL" в методе Find<T>?

1 Ответ

1 голос
/ 10 августа 2009

Вы можете использовать:

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();
...