public void DeleteUser(string userName) { using (var unitOfWork = _unitOfWorkFactory.CreateAccountUnitOfWork()) { using (var transaction = unitOfWork.BeginTransaction()) { try { var userManager = CreateUserManager(unitOfWork.CurrentContext); var user = userManager.FindByName(userName); if (user == null) { throw new InvalidOperationException(string.Format("Cannot delete user {0}: User not found ", userName)); } var result = userManager.Delete(user); if (!result.Succeeded) { transaction.Rollback(); throw new Exception("Error removing user account from identity store"); } var userProfile = unitOfWork.UserProfileRepository.GetUserByUserName(userName); unitOfWork.UserProfileRepository.Delete(userProfile); unitOfWork.SaveChanges(); transaction.Commit(); using (var systemUnitOfWork = _unitOfWorkFactory.CreateSystemUnitOfWork()) { systemUnitOfWork.NotificationRepository.DeleteNotificationsByUser(userName); systemUnitOfWork.SaveChanges(); } } catch (Exception) { transaction.Rollback(); throw; } } } }