如何在 .NET 和 EF 中将加载的实体保存在内存中

问题描述 投票:0回答:0

我正在开发一个用 .NET 2.0 和 C# 编写的遗留应用程序,其唯一目的是执行工作流(后台作业或进程)。

本质上它的作用是:

  1. 在应用程序启动时,它将所有对象从数据库加载到内存中(在称为 Holder 的类中)
  2. 在各自的线程中启动进程(其中多个)
  3. 这些进程处理内存中的数据(多线程),因此数据访问保持在锁之间。

这张图片描述了处理数据的过程。

我的任务是使用新的 .NET 7 + 实体框架及其功能对其进行现代化改造。

因为这个应用程序是大量多线程的,而且许多基础设施类(如工人、持有者、dal 访问)都是单例,所以到处都是锁定。

我的愿望是:

  1. 因为多个线程访问相同的数据,我想摆脱那些单例。但对我来说,问题是我应该在哪里保存工作流需要处理的内存数据。?
  2. 如果我选择不删除单例,那么我正在考虑使用存储库模式将实体保存在内存中,但我不知道这是否是个好主意,所以它们应该是单例。

我的问题是一旦加载数据,在哪里保存数据,以便许多线程可以使用(读取,更新删除)它而无需每次都去数据库?

为此我需要一个设计模式,或者为实体框架使用某种二级缓存

.net entity-framework .net-core design-patterns entity-framework-core
© www.soinside.com 2019 - 2024. All rights reserved.