Utilizzo di async dapper all'interno di una transazione

asynchronous dapper transactions

Domanda

Attualmente stiamo utilizzando dapper per gestire alcuni scenari di aggiornamento / eliminazione molto costosi e ne siamo molto soddisfatti.

Ora abbiamo il seguente scenario che voglio accelerare.

  • L'aggiornamento 1 dura circa ~ 60 secondi.
  • L'aggiornamento 2 impiega <1 secondo.

Se facciamo questo modo di sincronizzazione, passeremo circa 61 secondi in attesa totale. Possiamo accelerare, chiamare il primo aggiornamento con il metodo ExecuteAsync , ma non aspettarlo. Così:

Connection.ExecuteAsync("Update 1", new { someValue }, Transaction, 120);
Connection.Execute("Update 2", new { someValue }, Transaction);

Si noti la mancanza di await parola chiave.

Ciò accelera le cose, ma è una buona idea e funzionerà in una transazione? Cosa succede quando viene colpito il commit della transazione e il primo aggiornamento è ancora in esecuzione? O è una cattiva idea usare ExecuteAsync senza attendere?

Supponendo che l'aggiornamento 2 non dipenda dall'aggiornamento 1.

Risposta popolare

Se il primo aggiornamento non funziona con gli stessi dati del secondo e non è necessario attendere il risultato, è possibile eseguirlo in modalità asincrona senza attendere. Ti suggerisco di leggere questa pagina:

http://www.joesauve.com/async-dapper-and-async-sql-connection-management/

Spiega come eseguire comandi asincroni con una connessione asincrona al database, penso che possa esserti utile.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché