У меня есть пользовательский репозиторий, который делает все доступ к данным пользователя. У меня также есть блок рабочего класса, который управляет соединением и транзакцией для моих репозиториев. Как эффективно откатить транзакцию в моем классе рабочей единицы, если в моем хранилище произошла ошибка?
Создать метод в моем UserRepository. Я использую Dapper для DataAccess.
try
{
this.Connection.Execute("User_Create", parameters, this.Transaction,
commandType: CommandType.StoredProcedure);
}
catch (Exception)
{
//Need to tell my unit of work to rollback the transaction.
}
Я передаю соединение и транзакцию, которые были созданы в конструкторе единиц работы, в мои репозитории. Ниже приведена информация о моём классе работы.
public UserRepository UserRepository
{
get
{
if (this._userRepository == null)
this._userRepository =
new UserRepository(this._connection, this._transaction);
return this._userRepository;
}
}
Я надеюсь выяснить лучший подход.
* Обновление *
После более подробного исследования модели единицы работы, я думаю, что в своем примере я использую ее совершенно неправильно.