.NET Core no admite transacciones distribuidas porque requeriría un administrador de transacciones diferente en cada plataforma. Puede aparecer en el futuro (aquí está el problema en curso), pero por ahora cualquier Transacción que requiera dos administradores de recursos diferentes generará esta excepción.
En su lugar, puede coordinar transacciones separadas. Haga que dos transacciones separadas completen su trabajo y luego confírmelas a ambas. Hay una posibilidad que la primera confirmación tiene éxito y la segunda falla, pero para SQL Server, eso sería una ocurrencia muy rara. Algo como:
_db1UOW.Begin(); //creating sql transaction
await _db1UOW.IDenialDetailsRepositorydb1.InsertDenialDetails(denialsDetails);
await _db1UOW.IRuleDetailsRepositorydb1.InsertRulesDetails(rulesDetails);
_db2UOW.Begin(); //creating sql transaction
await _db2UOW.IRuleDetailsRepository.GetRulesDetails();
await _db2UOW.IDenialDetailsRepository.InsertDenialDetails(denialsDetails);
var data = await _db2UOW.IRuleDetailsRepository.InsertRulesDetails(rulesDetails);
_db1UOW.Commit(); //commitng sql transaction
try
{
_db2UOW.Commit(); //commitng sql transaction
}
catch (Exception ex)
{
LogError("Second transaction failed to commit after first one committed. Administrators may need to fix stuff");
throw;
}
O si las dos bases de datos están en el mismo servidor, puede usar consultas entre bases de datos con una sola SqlConnection para registrar los cambios en una sola transacción de SQL Server.