多线程冲突的SaveChanges无法理解

时间:2018-11-29 12:25:30

标签: entity-framework transactions savechanges

我遇到一种情况,我在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并没有冲突。

0 个答案:

没有答案