Comment utiliser la méthode Find<T>
de Subsonic pour rechercher des lignes avec un champ contenant la valeur "null". Pour les besoins de la discussion, supposons que j'ai une classe aC# appelée "Visit" qui contient un champ DateTime nullable appelé "SynchronizedOn" et supposons aussi que la migration Subsonic a créé la table "Visites" correspondante et le champ "SynchronizedOn" .Subsonic 3, SimpleRepository, SQL Server: Comment trouver des lignes avec un champ nul?
Si je devais écrire la requête SQL moi-même, je voulais écrire quelque chose comme:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
Lorsque 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 renvoie jamais de lignes.
J'ai essayé le code suivant, mais il génère une erreur:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
J'ai pu 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 spécifier la condition «SynchronizedOn IS NULL» dans la méthode Find<T>
Votre suggestion est une amélioration de ma requête LINQ mais pas en utilisant la méthode Trouver. Dois-je comprendre que la méthode Find est incapable de vérifier null? –
desautelsj