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