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>?

Était-ce utile?

La solution

Vous pouvez utiliser:

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top