|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Здраствуйте. Возможно ли для соединения определить транзакцию по умолчанию? Пробовал так: Код: c# 1.
но при выполнении комманд вываливается исключение, если же коммандам вручную передавать эту транзакцию, то все ок. Но лень...лень матушка заставляет подумать как бы исхитриться, чтобы не определять для каждой комманды транзакцию, а определить транзакцию по умолчанию ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 16:53 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Thor234, Напишите свой метод расширения, который будет создавать команду с одновременным присвоением ей транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2012, 20:28 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
TransactionScope ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 06:02 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Алексей КTransactionScope ? Только не забудьте предупредить человека про возможные грабли с распределёнными транзакциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 10:27 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
SolYUtorАлексей КTransactionScope ? Только не забудьте предупредить человека про возможные грабли с распределёнными транзакциями.Проблемы с вложенными транзакциями в "явном" DbTransaction тоже ничё так. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:19 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
SolYUtorАлексей КTransactionScope ? Только не забудьте предупредить человека про возможные грабли с распределёнными транзакциями. о каких граблях идёт речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:37 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationSolYUtorпропущено... Только не забудьте предупредить человека про возможные грабли с распределёнными транзакциями. о каких граблях идёт речь?Ну что он самовольно делает транзакцию распределённой в соответствующих случаях. Независимо от того, хотим мы этого или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:43 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pation, Например, не все провайдеры с ним нормально работают) Насколько я помню, Firebird не поддерживает TransactionScope, во всяком случае в EF он его игнорировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 12:46 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Lelouchpation, Например, не все провайдеры с ним нормально работают) Насколько я помню, Firebird не поддерживает TransactionScope, во всяком случае в EF он его игнорировал. если это так, то это проблема Firebird-а, а не TransactionScope-а ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 13:43 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Алексей Кpationпропущено... о каких граблях идёт речь?Ну что он самовольно делает транзакцию распределённой в соответствующих случаях. Независимо от того, хотим мы этого или нет. транзакция становится распределённой , действительно автоматически, но причём здесь TransactionScope? он сделан как раз для того, что бы вы не думали об этом ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 13:45 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationтранзакция становится распределённой , действительно автоматически, но причём здесь TransactionScope? он сделан как раз для того, что бы вы не думали об этомЯ бы предпочёл самостоятельно решать, можно начинать распределённую транзакцию или нет. Если нет и она должна начаться - выдавать ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 13:50 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationтранзакция становится распределённой , действительно автоматически, но причём здесь TransactionScope? он сделан как раз для того, что бы вы не думали об этом Это фантастика. Думать об этом надо всегда, потому что открыться может в любом неподходящем случае. Скажем, если у нас два соединения к одной базе - то получи распределённую транзакцию. 1. Бьёт по производительности. 2. Головная боль с администрированием. Должны быть подняты MSDTC, настроены права доступа порты и тд. Всё это напрасная растрата сил. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:02 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pation, но это одни из граблей, на которые можно настпуить, используя TransactionScope) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:30 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Вообще, в идеале хочется как-то так: Код: c# 1. 2. 3. 4. 5.
Но вроде как нет способа определить по DbConnection, что в нём начата транзакция (на случай вложенных DbTransactionScope). Делать 'select @@trancount' не вариант. Делать статический список слабых ссылок на соединения, в которых открыты транзакции, тоже не хочется. Проще смириться с недостатками TransactionScope. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:46 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Алексей К, Можно использовать ThreadStatic или ThreadLocal, и эмулировать нечто подобное TransactionScope. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 14:55 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
SolYUtorМожно использовать ThreadStatic или ThreadLocal, и эмулировать нечто подобное TransactionScope.Да не. Наверное проще забить на DbTransaction и посылать SQL-команды самостоятельно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:15 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Алексей Кpationтранзакция становится распределённой , действительно автоматически, но причём здесь TransactionScope? он сделан как раз для того, что бы вы не думали об этомЯ бы предпочёл самостоятельно решать, можно начинать распределённую транзакцию или нет. Если нет и она должна начаться - выдавать ошибку. вы не понимаете о чём говорите, не хотите делать распределённую транзакцию размещайте ваши команды в отдельном скопе ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:44 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
SolYUtorpationтранзакция становится распределённой , действительно автоматически, но причём здесь TransactionScope? он сделан как раз для того, что бы вы не думали об этом Это фантастика. Думать об этом надо всегда, потому что открыться может в любом неподходящем случае. Скажем, если у нас два соединения к одной базе - то получи распределённую транзакцию. 1. Бьёт по производительности. 2. Головная боль с администрированием. Должны быть подняты MSDTC, настроены права доступа порты и тд. Всё это напрасная растрата сил. pationвы не понимаете о чём говорите, не хотите делать распределённую транзакцию размещайте ваши команды в отдельном скопе ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:46 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Lelouchpation, но это одни из граблей, на которые можно настпуить, используя TransactionScope) пока граблей не увидел ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:46 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationвы не понимаете о чём говорите, не хотите делать распределённую транзакцию размещайте ваши команды в отдельном скопе Ой ли? Есть код с использованием сторонней библиотеки, которая лезет в базу и что-то туда пишет/читает. И ваш тоже код тоже пишет в базу, может быть даже в другую. И всё это под TransactionScope. Вуаля, распределённая транзакция! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:51 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationАлексей Кпропущено... Я бы предпочёл самостоятельно решать, можно начинать распределённую транзакцию или нет. Если нет и она должна начаться - выдавать ошибку. вы не понимаете о чём говорите, не хотите делать распределённую транзакцию размещайте ваши команды в отдельном скопеДаже с одним скопом и одним конекшеном можно огрести распределённую транзакцию. Оно нам надо? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
А в этом случае транзакция будет локальной: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:53 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Алексей КSolYUtorМожно использовать ThreadStatic или ThreadLocal, и эмулировать нечто подобное TransactionScope.Да не. Наверное проще забить на DbTransaction и посылать SQL-команды самостоятельно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
конешно, а лучше вообще пересесть на ассемблер ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:53 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
Алексей Кpationпропущено... вы не понимаете о чём говорите, не хотите делать распределённую транзакцию размещайте ваши команды в отдельном скопеДаже с одним скопом и одним конекшеном можно огрести распределённую транзакцию. Оно нам надо? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
нет! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 15:54 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationАлексей Кпропущено... Даже с одним скопом и одним конекшеном можно огрести распределённую транзакцию. Оно нам надо? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
нет!В MSSQL2008 может и нет. А в остальных СУБД - да. Ещё с DB2 были проблемы - он в принципе не поддерживает простые транзакции через TransactionScope, только распределённые. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 16:00 |
|
Транзакция по умолчанию
|
|||
---|---|---|---|
#18+
pationАлексей Кпропущено... Да не. Наверное проще забить на DbTransaction и посылать SQL-команды самостоятельно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
конешно, а лучше вообще пересесть на ассемблерПричём тут ассемблер. Такая штука пишется максимум за час со всеми бантиками для кроссубдности. А пример прикладного кода я показал выше, практически ничем не отличается от родного TransactionScope. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2012, 16:03 |
|
|
start [/forum/topic.php?fid=17&msg=37988516&tid=1350224]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 152ms |
0 / 0 |