Meine Anwendung verwendet SQL Server mit Dapper und ASP.NET Core 2 Preview 2. Ich verwende ein Repository-Muster mit einer einzelnen Datenbank. Ich habe für jede Entität ein Repository geschrieben. In der Business-Schicht werde ich jedes Repository mit Hilfe eines separaten Verbindungsobjekts innerhalb des Transaktionsbereichs injizieren. Ist dieses Muster eine verteilte Transaktion? Oder wird SQL Server als lokale Transaktion behandelt. Unterstützt .NET Core keine verteilten Transaktionen? Oder kann ich stattdessen .NET Framework verwenden?
Das wäre eine verteilte Transaktion, und selbst wenn .NET Core es erlaubt, ist es eine schlechte Übung.
Stattdessen injizieren Sie eine einzelne SqlConnection für beide Repositorys und verwalten die Transaktion für die SqlConnection.
Wenn Sie TransactionScope oder EF nicht haben, müssen Sie wahrscheinlich TSQL BEGIN TRANSACTION / COMMIT explizit auf der SqlConnection verwenden, da SqlCommand sonst explizit eingetragen werden muss (was Sie nicht tun möchten).