我发现了很多问题和信息,说明DbContext不是线程安全的。但是此类问题中的示例包含多个线程使用的SaveChanges
调用。下一个示例呢?
someCollection1.AsParallel().ForAll(item => { item.SomeField = 0; dbContext.Update(item); })
someCollection2.AsParallel().ForAll(item => { item.SomeField = 0; dbContext.Update(item); })
dbContext.SaveChanges();
据我了解,行dbContext.Update(item)
使dbContext
跟踪item
进行更新。 SaveChanges
仅由一个线程调用。几个线程可以访问Update
进行跟踪吗?
答案 0 :(得分:0)
根据Microsoft的文档(请参阅Entity Framework Core: Asynchronous Queries),EF Core不支持在同一DbContext
实例上运行多个并行操作。因此,为了在同一个数据库上运行多个并行操作,您需要每个线程有一个专用的DbContext
实例。