Wie füge ich optionale Where-Klauseln mit QueryOver hinzu?Hinzufügen optionaler wo Parameter mit Nhibernate und QueryOver
TL; DR
Ich versuche, ein Suchformular für eine Anwendung zu implementieren und QueryOver verwenden.
Einige der Suchparameter sind optional.
var query =
myDatabase.QueryOver(() => customerAlias)
.JoinAlias(() => customerAlias.Projects,() => projectAlias)
.Where(() => projectAlias.IsClosed >= 1)
... possibly add more stuff
Aber was ist, wenn ich 2 Bedingungen habe? 'query = query.AddWhere (...)'? – LosManos
Es gibt wahrscheinlich keine Effizienz Kosten zu tun 'query.Where (condition1) .Where (condition2)' versus 'query.Where (condition1 && condition2)' natürlich gibt es in normalen LINQ, aber ich vermute, Nhibernate würde das gleiche erzeugen SQL-Abfrage von beiden. Aber Sie können das auch tun: http://stackoverflow.com/questions/22944722/what-ist-best-way-to-dynamic-add-to-a-where-clause-in-a-nibernate-query # 22948137 Obwohl Sie dann Ihre Inline-Aliase nicht erhalten. – starlight54
Für diejenigen, die meinen ursprünglichen Kommentar (dh mich) nicht verstanden haben, war mein Kommentar über 'query.Where (...); query.Where (...)', wo ich dachte, der zweite 'Where' Aufruf würde das überschreiben der erste, aber es stellt sich heraus, dass sie stattdessen verketten; Also ist die Antwort richtig. – LosManos