Я реализовал SqlTransaction
в C #, чтобы начать, зафиксировать и откатить транзакцию. Все идет правильно, но у меня возникла проблема при доступе к тем таблицам, которые подключены во время транзакции.
Мне не удалось прочитать таблицу во время транзакции (те таблицы, которые находятся в транзакции). Во время поиска я обнаружил, что это происходит из-за эксклюзивной блокировки. Любые последующие выборки этих данных, в свою очередь, должны ждать снятия монопольной блокировки. Затем я прошел через все уровни изоляции, предусмотренные SqlTransaction
, но это не сработало.
Итак, мне нужно снять исключительную блокировку во время транзакции, чтобы другой пользователь мог иметь доступ к этой таблице и мог читать данные.Есть ли способ добиться этого?
Заранее спасибо.
Вот мой код C # для транзакции
try
{
SqlTransaction transaction = null;
using (SqlConnection connection=new SqlConnection(Connection.ConnectionString))
{
connection.Open();
transaction=connection.BeginTransaction(IsolationLevel.Snapshot,"FaresheetTransaction");
//Here all transaction occurs
if (transaction.Connection != null)
{
transaction.Commit();
transaction.Dispose();
}
}
}
catch (Exception ex)
{
if (transaction.Connection != null)
transaction.Rollback();
transaction.Dispose();
} `
Этот код работает нормально, но проблема в том, что когда я обращаюсь к данным таблиц (к тем, к которым обращались во время транзакции) во время транзакции. К таблицам обращаются другие части приложения. Итак, когда я попытался прочитать данные из таблицы, он выдает исключение.