.NET Core understøtter ikke distribuerede transaktioner, fordi det ville kræve en anden transaktionsadministrator på hver platform. Det kan dukke op i fremtiden (her er problemet i gang), men indtil videre vil enhver transaktion, der kræver to forskellige ressourceadministratorer, give denne undtagelse.
I stedet kan du koordinere separate transaktioner. Få to separate transaktioner til at fuldføre deres arbejde, og begå dem begge. Der er en mulighed at den første commit lykkes, og den anden mislykkes, men for SQL Server ville det være en meget sjælden hændelse. Noget som:
_db1UOW.Begin(); //creating sql-transaktion afventer _db1UOW.IDenialDetailsRepositorydb1.InsertDenialDetails(denialsDetails); await _db1UOW.IRuleDetailsRepositorydb1.InsertRulesDetails(rulesDetails); _db2UOW.Begin(); //creating sql-transaktion afventer _db2UOW.IRuleDetailsRepository.GetRulesDetails(); afvent _db2UOW.IDenialDetailsRepository.InsertDenialDetails(denialsDetails); var data =await _db2UOW.IRuleDetailsRepository.InsertRulesDetails(rulesDetails); _db1UOW.Commit(); //commitng sql transaktion prøv { _db2UOW.Commit(); //commitng sql-transaktion } catch (undtagelseseksempel) { LogError("Anden transaktion kunne ikke begå efter første commit. Administratorer skal muligvis rette ting"); kaste; }
Eller hvis de to databaser er på den samme server, kan du bruge krydsdatabaseforespørgsler med en enkelt SqlConnection til at samle ændringerne i en enkelt SQL Server-transaktion.