【发布时间】:2019-04-16 15:27:03
【问题描述】:
我在 ASP.NET CORE 应用程序上使用 Entity Framework 作为与数据库通信并在其上获取/写入信息的方式。 (用作非常基本的 API,充当单独应用程序的服务器。)
客户有时会提出加入特定大厅的请求。我刚刚确认,如果同时有4个请求进入,他们都会在大厅注册,但玩家数量没有更新,如果更新了 - 它会超过顶部/限制。
我是否使用了错误的实体框架?是否有替代工具可用于此类事情,或者我应该让它使用单个线程(如果有人可以提醒我如何),还是使用锁定块语句封装我的所有操作/端点?
无论我如何构建我的代码,都容易出现这些同时发生的 http 请求,在我的存储库/上下文中并行移动。
如果我可以制作某种队列,那就太好了,我相信这就是将所有内容封装在锁中的效果。
编辑:
正如vasily.sib 所回答的那样,我可以使用并发令牌来解决这个问题。请查看他的评论,了解有关如何使用它们的一些惊人信息!
【问题讨论】:
-
你能分享你的代码sn-p吗?
-
“我使用实体框架错了吗?” - 等一下,我将使用我的心灵感应超能力......是的,我现在明白了。你用错了。
-
每个请求都会实例化不同的 DbContext 实例,不同的 DbContext 实例应该可以在不同的线程中正常工作。
-
现在认真:在谷歌搜索 “ef 核心并发” 0.37 秒后查看what I have found(和another useful link)。您实际寻找的是乐观并发控制。
-
@vasily.sib 我现在就试试,我想这可能是我的开销!
标签: c# asp.net-core entity-framework-core