Ich möchte mehrere Methodenaufrufe mit DapperExtensions-Funktionen in einer einzigen Transaktion zusammenfassen, so dass ich sie alle zurückrollen kann, wenn einer fehlschlägt.
Dies beinhaltet Aufrufe an bereits bestehende Funktionen, von denen einige
Die Antwort muss Prädikatsaufrufe und mehrere Verbindungen in einer einzigen Transaktion ermöglichen.
Bis jetzt habe ich zwei Ansätze gefunden, TransactionScope und IDbConnection.
Transaktions-Scope
using (var transactionScope = new TransactionScope())
{
// Function calls here
transactionScope.Complete();
}
Obwohl dies meines Wissens nach in .NET Core 2.0 verfügbar sein sollte, scheint es nicht von den Dapper- und / oder DapperExtensions-Anrufen unterstützt zu werden, die ich verwende. Das Ausführen gibt mir den folgenden Fehler:
"Enlisting in Ambient transactions is not supported."
Ich suchte nach Dokumenten, ob das möglich ist oder jemals sein wird, aber ich bin leer ausgegangen.
IDbTransaktion
DapperExtensions 'Prädikatfunktionen scheinen dies zu unterstützen, aber bisher kann ich keine Beispiele finden, die dieselbe Transaktion über mehrere Verbindungen hinweg verwenden. Einige ältere Beiträge geben ausdrücklich an, dass dies ein "verbindungsbasierter" Transaktionsansatz ist, also bin ich mir nicht sicher, ob das möglich ist.
Ich finde, dass Dokumentation auf DapperExtensions ziemlich schlank ist, also, wenn mich jemand auf einige Hinweise darauf hinweisen könnte, wie seine Funktionen Transaktionen im Allgemeinen behandeln, wäre das auch sehr hilfreich!