Уровень изоляции в транзакции Sql

Я реализовал 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();   
}   `                         

Этот код работает нормально, но проблема в том, что когда я обращаюсь к данным таблиц (к тем, к которым обращались во время транзакции) во время транзакции. К таблицам обращаются другие части приложения. Итак, когда я попытался прочитать данные из таблицы, он выдает исключение.

9
задан The Bearded Llama 30 November 2017 в 12:29
поделиться