Ich frage mich, ob ServiceStack.OrmLite die JoinSqlBuilder erlauben die folgende einfache Abfrage zu erstellen:Does ServiceStack.OrmLite.JoinSqlBuilder erlauben eine einfache Abfrage zu bauen
SELECT * FROM Table1 a
INNER JOIN Table2 b ON ...
WHERE a.Column1 = 1 AND (a.Column2 = 2 OR b.Column3 = 3);
Das Problem ist (a.Column2 = 2 OR b.Column3 = 3)
Teil zu bauen. JoinSqlBuilder verfügt über eine Liste mit Methoden wie Where<T>, And<T>, Or<T>
, mit denen Bedingungen für eine Abfrage hinzugefügt werden können.
Zum Beispiel, wenn ich tun:
builder
.Join(...)
.Where<Table1Poco>(a => a.Column1 == 1)
.And<Table1Poco>(a => a.Column2 == 2)
.Or<Table2Poco>(a => a.Column3 == 3)
...;
ich bekommen:
... WHERE a.Column1 = 1 AND a.Column2 = 2 OR b.Column3 = 3;
Gibt es eine Möglichkeit a.Column1 = 1 AND (a.Column2 = 2 OR b.Column3 = 3)
mit ServiceStack.OrmLite zu bauen?
Ich weiß, dass ich es mit rohen sql tun kann, aber es ist keine Option, wie ich Typsicherheit und Dialektunabhängigkeit nicht verlieren möchte.
Soweit ich weiß, ist es nicht da. Und Micro-Orm ist gut für diese Art oder Dinge. Sie können auf einfache alte Abfragen für komplizierte Szenarien zurückgreifen. Hoffentlich kennen Sie die Abfrage() Funktion, die Sie verwenden können und einen Parameter übergeben, wenn Sie möchten. –
kunjee