Subsonic 3, SimpleRepository, SQL Server: Comment trouver les lignes avec un champ nul?
-
12-09-2019 - |
Question
Comment ca que j'utilise la méthode de Find<T>
de Subsonic pour rechercher des lignes avec un champ contenant la valeur « null ». Par souci de la discussion, supposons que je classe ac # appelée « visite » qui contient un champ DateTime nullable appelé « SynchronizedOn » et aussi supposons que la migration Subsonic a créé le correspondant table « Visites » et le champ « SynchronizedOn » .
Si je devais écrire la requête SQL moi-même, j'écrire quelque chose comme:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
Quand j'utilise le code suivant:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
Subsonic il se transforme en la requête SQL suivante:
SELECT * FROM Visits WHERE SynchronizedOn == null
qui ne retourne jamais toutes les lignes.
J'ai essayé le code suivant, mais il génère une erreur:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
Je suis en mesure d'utiliser la syntaxe suivante:
var query = from v in repository.All<Visit>()
where v.SynchronizedOn == null
orderby v.CreatedOn
select v;
visits = query.ToList<Visit>();
mais ce n'est pas aussi belle un court en utilisant la méthode Find<T>
.
Tout le monde sait comment je peux préciser la condition "SynchronizedOn IS NULL" dans la méthode Find<T>
?
La solution
Vous pouvez utiliser:
var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();