ServiceStack.OrmLite – kann ich so etwas wie Db.Select<Foo, Bar>() tun?
-
21-12-2019 - |
Frage
Wie man Select
Daten verwenden Service.OrmLite
aus zwei Tischen JOIN
ohne ein weiteres Poco (Coal+Data) nur für diesen Zweck zu erstellen.
Ich habe Poco für Coal und für CoalData wie:
class Coal {
// PK
public long Id {get; set;}
public string Name {get; set;}
}
class CoalData {
// FK
public long Id {get; set;}
public int Prop1 {get; set;}
....
}
Bei Dapper ist das ganz einfach wie:
var personWithAddress = connection
.Query<Person, Address, Extra, Tuple<Person, Address, Extra>>
(sql, (p, a, e) => Tuple.Create(p, a, e), splitOn: "AddressId,Id").First();
Lösung
ServiceStack.OrmLite unterstützt nicht die von Ihnen vorgeschlagene Verknüpfung von zwei oder mehr Tabellen.Derzeit werden nur einfache Ausdrücke unterstützt und für Joins wird empfohlen, auf unformatierte SQL-Abfragen zurückzugreifen. Siehe hier für OrmLite-Funktionalität.
Für alles, was komplexer ist (z. B.(Abfragen mit Tabellenverknüpfungen) können Sie immer noch problemlos auf unformatierte SQL-Abfragen zurückgreifen, wie unten gezeigt.
Allerdings wird ServiceStack.OrmLite in naher Zukunft wahrscheinlich eine bessere Unterstützung für Joins erhalten, da dies die Spitze ist Offene Funktionsanfrage, jedoch im Rahmen des kommerziellen ServiceStack-Angebots.