我在开发应用程序时遇到一个问题。重点是什么?任务是创建一个具有多个模块(单独的可执行文件)的通用应用程序。我不会解释这个决定的原因,但最主要的是这是必要的。目前需要使用数据库,我正在使用 DBContext(实体框架 C#),如果我从一个模块连接到数据库,一切都很好。但一段时间后,需要同时从多个模块访问数据库。据我所知,在实体框架中,数据库中的更改不会不断加载,因此当您更改一个模块中的数据库(任何行)时,这些更改不会反映在其他模块中。这就是问题。
是否可以以某种方式同步,也许更新时重新加载?到目前为止,我脑子里只有一个想法:制作一个单独的模块,该模块将是唯一可以访问数据库的模块,并且可以根据需要从其他模块访问该模块。但这需要相当长的时间。因此,我不知道该怎么办。如果有专家的话我很乐意听取建议)
PS:目前其他模块之间的“通讯”是通过web socket进行的,或许也可以用来解决
他们在评论中帮助我解决了问题。有几种选择:
API,没有时间这样做。DBContext。这也相当困难,我读了几篇关于同步的文章,有基于组织三元素队列来完成所有事情的选项,但在这里你也需要花费时间和精力来组织所有事情。DBContext。在这种情况下,数据将从数据库加载,而不是从本地缓存加载,因此将始终是最新的。记录时,我们还进行所有必要的更改,然后SaveChanges()数据立即保存到数据库中。我很久以前就看到了最后一个选项,但很多人说每次创建一个新的上下文对于程序的内存来说太昂贵了。但是,我尝试按照@AlexanderPetrov的建议进行操作,检查了请求处理时间,结果差异非常微不足道,并且数据始终是最新的。
感谢您的帮助@AlexanderPetrov 和@CrazyElf