Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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);
    }
  }
}

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:

using (var adoCommand = Session.GetAdoCommand())
{
  adoCommand.CommandText = "SELECT * from QuinoIdentityUser";
  var companies = Session.GetListByCommand<Company>(adoCommand);
}

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.

  • No labels