SubSonic 3, SimpleRePository, SQL Server: Wie finde ich Zeilen mit einem Nullfeld?
-
12-09-2019 - |
Frage
Wie ca ich subsonics benutze Find<T>
Methode zur Suche nach Zeilen mit einem Feld, das den Wert "Null" enthält. Nehmen wir zur Diskussion an, ich habe eine AC# -Klasse mit dem Namen "Visit", die ein nullbares DateTime -Feld namens "Synchronizedon" enthält, und nehmen wir auch an, dass die Subsonic -Migration die entsprechende "Besuche" und das "Synchronizedon" -Felderfeld erstellt hat .
Wenn ich die SQL -Abfrage selbst schreiben würde, würde ich so etwas schreiben wie:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
Wenn ich den folgenden Code verwende:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
Subsonic verwandelt es in die folgende SQL -Abfrage:
SELECT * FROM Visits WHERE SynchronizedOn == null
was niemals Zeilen zurückgibt.
Ich habe den folgenden Code ausprobiert, aber er macht einen Fehler:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
Ich konnte die folgende Syntax verwenden:
var query = from v in repository.All<Visit>()
where v.SynchronizedOn == null
orderby v.CreatedOn
select v;
visits = query.ToList<Visit>();
Aber es ist nicht so schön wie die Verwendung der Find<T>
Methode.
Jeder weiß, wie ich den Zustand "Synchronizedon ist null" angeben kann Find<T>
Methode?
Lösung
Sie können verwenden:
var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();