【发布时间】:2021-05-28 16:37:13
【问题描述】:
我正在按照article 使用ITicketStore。每当需要执行任何数据库操作时,都会在此 DbContext 中创建。
在我的代码中,不是通过 using() 语法创建 DbContext,而是通过构造函数注入。在代码投入生产之前,一切都运行良好。 流量增加时开始出现以下异常。
- System.InvalidOperationException 在前一个操作完成之前在此上下文中启动了第二个操作。
- Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException
这可能是因为 ITicketStore 是一个单例并使用 DI 注入 DbContext,在多个线程之间共享相同的 DbContext 实例。
我更改了代码以通过 using() 创建一个 DbContext 实例,现在它工作正常。
但我正在尝试通过 DI 注入来找出使 DbContext 工作的任何方法。
【问题讨论】:
-
您是否错过了使用 dbcontext 的调用的任何等待?我在没有等待的情况下将数据库上下文称为一堆,因为最后我有一个WhenAll。这导致了类似的问题。
-
不,在使用 dbcontext 时使用 await
标签: c# .net asp.net-identity identityserver4 asp.net-core-3.1