c# - 多个线程在具有实体框架核心的同一张表(读+写)上工作
问题描述
我需要从多个线程读取/写入任务表。这些线程是任务表的消费者,并从中删除和更新任务。他们更新表以“拥有”一个任务,并在完成执行后将其从表中删除。
我一直在阅读当一些线程与实体框架核心在同一个表上工作时可以发现的怪癖,我注意到 DbContext 不是线程保存的。所以,我必须每个线程都有一个 DbContext。
我预见的问题是当一个线程更新一行以将其分配给队列但同时另一个线程试图将该任务分配给另一个队列时会发生什么。
反正有锁定行吗?这是实体框架在访问行时在后台执行的操作吗?在对所有系统进行编码之前,我想对问题进行一些概述。
PD 我正在使用带有 pomelo 驱动程序的 mysql 后端。
解决方案
推荐阅读
- google-earth-engine - 谷歌地球引擎:ee.List() 输出为整数?
- php - 我如何使用 PDO 获取数据
- linux - 使用设备树在 Linux 中将 SD 卡检测为 SDR50
- swift - YouTube 原生在 Swift 应用程序中?
- java - Java产品是否部署在字节码阶段?
- apache-spark - Spark - “部分”窗口函数
- html - Remove hairline border in elements in chrome mobile mode
- docker - docker 命令有什么问题?
- java - 基于历史数据的图表图像生成?
- string - 如何在 python 中使用字符串引用类?