Custom ADO Commands
Nicht alle Queries lassen sich mit der aktuellen API abbilden. Verschachtelte Abfragen mit Subselects oder erweiterten Aggregationen sind heute noch nicht unterstützt. Für diese Fälle kann über die API direkt ein ADO-Command oder eine ADO-Connection erstellt werden.
Über eine Session kann jederzeit auf die unterliegende Connection zugegriffen werden:
var adoConnection = Session.GetAdoConnection();
Die Connection welche dabei zurückgegeben wird, ist über die Session verwaltet und wird zusammen mit dieser wieder freigegeben. Ein zusätzliches using
ist in diesen Fällen nicht notwendig.
Als Alternative kann über die Session auch direkt ein Command erstellt werden und für individuelle Abfragen verwendet werden:
using (var adoCommand = Session.GetAdoCommand())
{
adoCommand.CommandText = "SELECT * from QuinoIdentityUser";
using (var reader = adoCommand.ExecuteReader())
{
while (reader.Read())
{
var id = reader.GetGuid(0);
// Do something with the returned data.
}
}
}
Abfragen können auch direkt auf existierende Klassen gemappt werden:
Session.GetListByCommand<Company>(command =>
{
// Customize the command to return companies.
});
Mit dem verfügbaren Overload kann direkt ein IDbCommand mitgegeben werden:
Das Resultat des entsprechenden Commands muss Objekte vom Typ “Company” zurückgeben. Zusätzliche zurückgegebene Spalten werden ignoriert. Sollten aber wichtige Eigenschaften wie z.B. “Id” fehlen so kann dies zu Folgefehler führen.