public void MakeOrder(string itemName, int userId) { using (var tran = transactionFactory.GetTransaction()) { var order = new Order(itemName, userId); ordersRepository.Add(order); if (ShouldThrowAfterOrderAdd) { throw new Exception("simulated error after adding order"); } var user = usersRepository.Find(userId); user.IncreaseOrdersCount(); usersRepository.Update(user); if (ShouldThrowAfterUserUpdate) { throw new Exception("simulated error after updating user counter"); } tran.Commit(); } }
/// <summary> /// Obtiene una transacción que permite leer y escribir información /// en la base de datos. /// </summary> /// <returns> /// Una transacción que permite leer y escribir información en la /// base de datos. /// </returns> public ICrudReadWriteTransaction GetTransaction() => _factory.GetTransaction(Configuration);