У нас есть методы для них на уровне фасада, которые могут использовать любую БД.
У меня есть ситуация, когда мне нужно что-то записать в обе базы данных, но если на второй произойдет сбой, мне нужно выполнить откат на обеих.
Код: Выделить всё
public async Task DeactivateUser(UserDTO userDTO)
{
IDbContextTransaction dbOneTransaction = null;
IDbContextTransaction dbTwoTransaction = null;
try
{
dbOneTransaction = await this.dbOneService.DeactivateUser(mappedUser);
dbTwoTransaction = await this.dbTwoService.RemoveUserFromLists(userDTO.userId);
//Commit changes
if (dbOneTransaction != null)
{
await this._dbOneOperations.CommitTransactionAsync(dbOneTransaction);
}
if (dbTwoTransaction != null)
{
await this._dbTwoOperations.CommitTransactionAsync(dbTwoTransaction);
}
}
catch (DataServiceException ex)
{
//Rollback changes
if (dbOneTransaction != null)
{
await this._dbOneOperations.RollbackTransactionAsync(dbOneTransaction);
}
if (dbTwoTransaction != null)
{
await this._dbTwoOperations.RollbackTransactionAsync(dbTwoTransaction);
}
return false;
}
return true;
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... cade-level
Мобильная версия