Страница 1 из 1
Один connection и множество транзакций
Добавлено: 06 дек 2006, 10:36
ARM
Давно прочитал в статье уважаемого Дмитрия о транзакциях, что "Собственно, IB обладает возможностью в одном коннекте стартовать много транзакций, что очень удобно". Эти ньансы при юзанию ФБ в Билдере уже не помню, но в .NET + FB Net Provider 2.0 при старте второй транзакции для коннекшена, вываливается исключение, что транзакция уже активна.
ВОПРОС: Это такая "фича" .NET Provider`а или статья уже устарела ?
Добавлено: 06 дек 2006, 11:18
WildSery
Статья не устарела. Фактически, стандарт работы с базой, когда на одном коннекте много транзакций.
Объектов "транзакция" несколько должно быть, а не стартоваться несколько раз одна.
Добавлено: 06 дек 2006, 11:48
kdv
ВОПРОС: Это такая "фича" .NET Provider`а или статья уже устарела ?
у BDE одна транзакция на коннект. у ODBC тоже. У JDBC - другая система управления транзакциями, совершенно. у .Net Provider - не знаю.
С одной стороны есть функциональность IB/FB, которая разумеется не ухудшается. А с другой стороны - драйвер, который должен подчиняться заданной архитектуре. Если драйверы такого типа МОГУТ стартовать несколько транзакций в одном коннекте - значит и этот тоже может, если его разработчик сделал это. Если не могут - то разработчик конкретного драйвера, понятно, ничего выше имеющегося функционала сделать не может.
Так что реально весь вопрос можно свести к следующему -
"Поддерживает ли .Net Provider несколько транзакций на коннект, и в каком интерфейсе".
Добавлено: 06 дек 2006, 11:57
ARM
Сейчас посмотрел, транзакцию никаким другим способом создать, кроме как через Connection.BeginTransaction() нельзя. При попытке получить ДРУГУЮ транзакцию через этот BeginTransaction() валится эксепшен, что транз. активна, что говорит о том, что эта "фича" (1 connection - 1 транзакция) провайдера, что есть бэд.
Спасибо всем, пошел ковырятся в исходниках.