У нас есть приложение, обращающееся к двум базам данных Oracle с использованием двух соединений (которые остаются открытыми через приложение).Для определенной функциональности мы используем распределенные транзакции.У нас есть Enlist = false в строке подключения и мы вручную подключаем соединение к транзакции.Проблема возникает в случае, когда мы очень часто обновляем одну и ту же запись в распределенной транзакции, в которой мы видим задержку, чтобы увидеть зафиксированные данные в предыдущем запуске.
ex.
using (OracleConnection connection1 = new OracleConnection())
{
using(OracleConnection connection2 = new OracleConnection())
{
connection1.ConnectionString = connection1String;
connection1.Open();
connection2.ConnectionString = connection2String;
connection2.Open();
//for 100 times, do an update
{
.. check the previously updated value
connection1.EnlistTransaction(currentTransaction);
connection2.EnlistTransaction(currentTransaction);
.. do an update using connection1
.. do some updates with connection2
}
}
}
как и в приведенном выше фрагменте кода, мы обновляем и проверяем ранее обновленное значение на следующей итерации.Проблемы возникают, когда мы часто запускаем это для одной записи, когда мы не видим зафиксированное обновление на последней итерации на следующей итерации, даже если оно было зафиксировано на предыдущей итерации.Но когда это происходит, это обновление видимо в других приложениях с очень очень небольшой задержкой, и даже в нашем коде это видно, если мы должны были отладить и снова запустить строку.Это почти как задержка в коммите, хотя предыдущий коммит вернулся из кода.У кого-нибудь есть идеи?