Mit Dapper QueryAsync zum zurückgeben eines einzelnen Objekts

Leider unsere DB ist datiert zurück bis in die 90er Jahre. Sein Vermächtnis ist so stark, dass wir immer noch mit SP damit zu tun, die meisten die CRUD-Operationen. Es scheint jedoch, dass Dapper Anzüge sehr gut und wir haben gerade angefangen zu spielen mit.

Allerdings bin ich ein wenig besorgt über den Umgang mit einer einzigen Datenzeile. In diesem Fall bin ich mit QueryAsync zu rufen, die SP die übergabe einer ID. Wie Sie sehen können, das Objekt ist die Rückgabe außerhalb der async-Aufruf(*).

Werde ich in Schwierigkeiten sein? Wenn ja, weiß jemand, wie es zu handhaben? Brauche ich eine QuerySync statt?

public class SchemePolicyRepository : ISchemePolicyRepository
{
    private readonly SqlConnection sql;

    protected SchemePolicyRepository(SqlConnection connection)
    {
        sql = connection;
    }
    ... 
    public async Task<SchemePolicy> GetById(string id)
    {
        var schemePolicy = await sql.QueryAsync<SchemePolicy>("risk.iE_GetSchemePolicyById",
            new { Id = id },
            commandType: CommandType.StoredProcedure);
        return schemePolicy != null ? schemePolicy.FirstOrDefault() : null;
    }
    ...
}

(*)Die SchemePolicy Objekt zurückgegeben FirstOfDefault() ist nicht eine async-Methode.

  • Wie Sie sehen können, ist das Objekt nicht zurückgeben, aus der async-Aufruf. Was bedeutet das? Sie bedeuten, dass Ihre Abfrage nicht funktioniert?
  • Es ist nichts falsch mit gespeicherte Prozeduren sind SQL-genau wie die schweren, langsamer ORMs generieren.
  • Danke @YuvalItzchakov, ich habe aktualisiert die post
  • Sie haben Recht, das ist, warum wir verwenden bevorzugt Dapper anstelle von EF. Die alte Mode ADO.NET ist noch etwas, das wir lieben, hier zu verwenden 🙂
  • Also im Grunde, Sie sind besorgt, weil FirstOrDefault ist nicht async?
  • Richtig!!!! @YuvalItzchakov

Schreibe einen Kommentar