У меня есть функция, которая вызывается рекурсивно.В этой функции используется объект 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();
}
}