Re[2]: И опять MySQL, TransactionScope & BLT
От: MozgC США http://nightcoder.livejournal.com
Дата: 09.06.09 12:26
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, MozgC, Вы писали:


IT>Добавил параметр в метод SetSpCommand, позволяющий проверять параметры процедуры на существующем соединении и соответствующую настройку Configuration.OpenNewConnectionToDiscoverParameters, которая по умолчанию == true.


Спасибо за оперативность, но к сожалению из-за все того же блока в методе MySqlConnection.Open() при открытии второго подключения возникает исключение:
                if (settings.AutoEnlist && Transaction.Current != null)
                {
                    driver = DriverTransactionManager.GetDriverInTransaction(Transaction.Current);
                    if (driver != null &&
                        (driver.IsInActiveUse ||
                        !driver.Settings.EquivalentTo(this.Settings)))
                        throw new NotSupportedException(Resources.MultipleConnectionsInTransactionNotSupported);
                }

из текущей транзакции, вызыванной TransactionScope, берется драйвер, у которого IsInActiveUse = true, и получаем все то же исключение.

Но, если перед этим выставить Configuration.OpenNewConnectionToDiscoverParameters в false :
            Configuration.OpenNewConnectionToDiscoverParameters = true;
            using (new TransactionScope())
            {
                using (var db = new DbManager())
                {
                    DataTable customers = db.SetSpCommand("GetAllCustomers").ExecuteDataTable();
                }
            }

то отрабатывает нормально

Я что-то не так понял по поводу OpenNewConnectionToDiscoverParameters или надо поправить? Или как раз в случае MySql надо в false выставлять этот параметр и так задумано?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.