Wie kann ich die Find<T>
Methode von Subsonic verwenden, um nach Zeilen mit einem Feld zu suchen, das den Wert "null" enthält? Für die Diskussion nehmen wir an, ich habe eine aC# -Klasse namens "Visit", die ein Nullable-DateTime-Feld mit dem Namen "SynchronizedOn" enthält und nehmen an, dass die Subsonic-Migration die entsprechende "Visits" -Tabelle und das "SynchronizedOn" -Feld erstellt hat .Subsonic 3, SimpleRepository, SQL Server: Wie finde ich Zeilen mit einem Nullfeld?
Wenn ich die SQL-Abfrage selbst zu schreiben, würde ich so etwas schreiben:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
Wenn ich den folgenden Code:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
Subsonic verwandelt es sich in die folgende SQL-Abfrage:
SELECT * FROM Visits WHERE SynchronizedOn == null
die nie irgendwelche Zeilen zurückgibt.
Ich habe versucht, den folgenden Code, aber es wirft einen Fehler:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
konnte ich 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, ein kurz wie die Find<T>
Methode .
Weiß jemand wie ich die "SynchronizedOn IS NULL" Bedingung in der Find<T>
Methode angeben kann?
Ihr Vorschlag ist eine Verbesserung auf meine Linq-Abfrage, aber nicht die Methode finden Verwendung. Sollte ich verstehen, dass die Methode Find nicht auf Null prüfen kann? –
desautelsj