Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Варианты использования транзакций. / 3 сообщений из 3, страница 1 из 1
31.10.2014, 13:57
    #38792939
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Варианты использования транзакций.
привет
Выдернул такую конструкцию из чужого кода:


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
        SqlTransaction _tran;
        SqlConnection _conn;

        public void BeginTran()
        {
            if (_tran != null)
                throw new Exception("Ошибка при начале выполнения транзакции.");

            try
            {
                _conn.Open();
                _tranName = Guid.NewGuid().ToString("N");
                _tran = _conn.BeginTransaction(IsolationLevel.ReadCommitted, _tranName);
            }
            catch (Exception ex)
            {
                try
                {
                    _conn.Close();
                }
                catch
                {
                }

                throw new Exception("Ошибка при начале выполнения транзакции.", ex);
            }
        }




Ну и CommitTran в то же духе. Используется так:


Код: c#
1.
2.
3.
BeginTran();
дёргаем базу
CommitTran(); 



Мне кажется такая конструкция неуклюжей, или я чего-то не понимаю? Чем плох такой вариант:

Код: c#
1.
2.
3.
4.
5.
            using (TransactionScope tran = new TransactionScope())
            {
                дёргаем базу
                tran.Complete(); 
            }
...
Рейтинг: 0 / 0
31.10.2014, 15:38
    #38793122
RomanH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Варианты использования транзакций.
rigorMortis
Чем плох такой вариант:

Код: c#
1.
2.
3.
4.
5.
            using (TransactionScope tran = new TransactionScope())
            {
                дёргаем базу
                tran.Complete(); 
            }


Нужно настраивать MSDTC.
В отличии от SqlConnection.BeginTransaction
Классический ADO.NET хорошо описан в MSDN
...
Рейтинг: 0 / 0
03.11.2014, 07:53
    #38794490
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Варианты использования транзакций.
rigorMortisМне кажется такая конструкция неуклюжей, или я чего-то не понимаю? Чем плох такой вариант:

Код: c#
1.
2.
3.
4.
5.
            using (TransactionScope tran = new TransactionScope())
            {
                дёргаем базу
                tran.Complete(); 
            }

В ряде случаев транзакция может стать распределённой без всякий предупреждений.

Управление транзакциями .
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Варианты использования транзакций. / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]