Многопоточные конфликтующие SaveChanges не понимают - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть ситуация, когда я копирую файлы в Azure, и когда копирование завершается, я записываю информацию в базу данных и вызываю изменения сохранения.И поскольку у меня много файлов, которые необходимо скопировать, я создаю один поток на файл, поэтому эти потоки пытаются вызывать SaveChanges независимо друг от друга.

foreach (var doc in docs)
{
   var task = CopyEntireModelInCDNAsync(doc.DocId, user, oldUploadPath, newUploadPath);
   taskList.Add(task);
}
resultList = await Task.WhenAll(taskList);

public async Task<ActionResultCDN> CopyEntireModelInCDNAsync(int docid,AspNetUser user,string oldUploadPath, string newUploadPath)
{
   //some code here

   await CDNManager.CopyBlobAsync(sourceUri, destinationUri);
   MyDbc.SaveChanges();
}

Я получаю следующее внутреннее исключение SqlConnection does not support parallel transactions

Обновления находятся в одной таблице, но в разных строках.Есть ли способ реализовать это (возможно, используя уровни изоляции транзакций), чтобы несколько SaveChanges не конфликтовали.

...