TransactionScope с уровнем изоляции ReadUncommitted в рекурсивной функции блокирует таблицу для первой итерации, а затем освобождает таблицу - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть функция, которая вызывается рекурсивно.В этой функции используется объект TransactionScope с уровнем изоляции ReadUncommitted.Странное поведение заключается в том, что в первый раз, когда он обращается к базе данных, блокирует таблицу, а после завершения первой итерации освобождает таблицу, и поведение в порядке.Кто-нибудь может объяснить, почему?Обратите внимание, что я использую Core ADO.Net.Нет ОРМ.Моя функция выглядит следующим образом:

public void ExportTransactionsData()
{
    var now = DateTime.Now;
    var slash = ConfigurationReader.PathCharacterToUse;
    var startId = 0L;
    var endId = 0L;
    var hasMoreRecords = false;

    using (var transScope = UtilityMethods.TransactionScope(IsolationLevel.ReadUncommitted, TransactionScopeOption.Required))
    {
        using (var stream = _provider.GetTransactionsXml(out startId, out endId, out hasMoreRecords))
        {
            if (stream.Length > 0)
            {
                var filePath = $"{ConfigurationReader.TransactionFilePath}{slash}EZFareTransactions_{startId}_{endId}_{now.ToString("yyyyMMddTHHmmss")}.xml";

                using (IUploadClient client = UploadClientFactory.Create(ConfigurationReader.UploadType))
                {
                    client.Upload(filePath, stream);                            
                }
            }
        }

        transScope.Complete();
    }

    if (hasMoreRecords)
    {
        ExportTransactionsData();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...