Транзакции в .NET 2.0
Namespace System.Transaction, и новый объект TransactionScope делают тривиальной задачу использования транзакций в новых приложениях и добавление поддержки транзакций в существующие (при условии что они были портированы на .NET 2.0).
В моем случае мне надо было добавить поддержку транзакций в приложение, используеющее Data Access Application Block (DAAB). В примере из документации по DAAB используется объект DbTransaction. Лично мне этот метод кажется не удобным по сравнению с использованием TransactionScope. Так как объект DbTransaction надо предавать как параметр в вызовы методов ExecuteXxxxx, то нужно организовать flow этого объекта через/между класс(ы) бизнес логики. Особенно это не удобно при добавлении поддержки транзакций к существующему приложению.
При использовании TransactionScope никакого flow объекта через бизнес логику организовывать не надо. Просто надо заключить код, который должен выполнятся в рамках одной транзакции в такую конструкцию:
using(TransactionScope scope = new TransactionScope())
{
DoSomeActionInTransaction();
DoAnotherActionInTheSameTransaction();
scope.Complete();
}
Вот так вот все легко и прозрачно :)
P.S. Еще один дополнительный плюс TransactionScope по сравнению с DbTransaction в том, что он не принадлежит namespace System.Data. Соответственно, поддерживаются не только DB-транзакции. Очень удобно когда бизнес логика и доступ к данным разделены.
4 Comments:
читая прошлые посты - интересно узнать:
перешел ты на новую работы или нет :-) ?
Перешёл :)
Завтра будет уже два года как на новой.
Понятно :-)
а куда если не секрет :-) ?
Stella Systems
Отправить комментарий
<< Home