首页 > 解决方案 > 多个线程在具有实体框架核心的同一张表(读+写)上工作

问题描述

我需要从多个线程读取/写入任务表。这些线程是任务表的消费者,并从中删除和更新任务。他们更新表以“拥有”一个任务,并在完成执行后将其从表中删除。

我一直在阅读当一些线程与实体框架核心在同一个表上工作时可以发现的怪癖,我注意到 DbContext 不是线程保存的。所以,我必须每个线程都有一个 DbContext。

我预见的问题是当一个线程更新一行以将其分配给队列但同时另一个线程试图将该任务分配给另一个队列时会发生什么。

反正有锁定行吗?这是实体框架在访问行时在后台执行的操作吗?在对所有系统进行编码之前,我想对问题进行一些概述。

PD 我正在使用带有 pomelo 驱动程序的 mysql 后端。

标签: c#multithreadingentity-framework.net-coreentity-framework-core

解决方案


推荐阅读