EF Core中的线程安全跟踪

时间:2019-02-05 10:05:41

标签: c# entity-framework-core

我发现了很多问题和信息,说明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进行跟踪吗?

1 个答案:

答案 0 :(得分:0)

根据Microsoft的文档(请参阅Entity Framework Core: Asynchronous Queries),EF Core不支持在同一DbContext实例上运行多个并行操作。因此,为了在同一个数据库上运行多个并行操作,您需要每个线程有一个专用的DbContext实例。