gpt4 book ai didi

c# - 如何使用 Entity Framework 处理长时间运行的操作?

转载 作者:太空狗 更新时间:2023-10-30 00:51:05 25 4
gpt4 key购买 nike

我们的团队正在开发一种机器,该机器将在盛有小瓶医学样本的托盘上执行物理过程。物理过程大约需要 1.5 小时。托盘和相关的小瓶是实体,使用 Entity Framework 从数据库加载。随着流程的运行,设备将更新实体上的值。这些变化可能相隔几分钟或几秒钟发生。在某些步骤结束时,相隔 10 到 45 分钟,我们希望将这些实体保存回数据库,然后继续。

Entity Framework 上下文打开 1.5 小时是否可以接受?我可以使用该上下文在该时间段内多次更改并保存实体吗?如果没有,处理这个问题的最佳方法是什么?

目前的一些想法:

  • 我们可以使用附加/分离功能。这应该允许我们对上下文之外的实体进行更改,然后创建一个新的上下文并在我们想要保存时附加实体,然后将其分离以继续工作。
  • 每次我们想要更改其中一个实体时,我们都可以创建一个新的上下文。但我认为我们不想在每次进行更改时都进行保存。
  • 我们可以将实体复制到业务对象,并在那里进行更改。然后当我们想要保存时,我们会打开一个上下文并将更改复制到实体中,然后保存。

最佳答案

2 和 3 的组合将是理想的。

首先,不要让上下文一次打开几个小时。您可以通过配置来执行此操作,但考虑到您正在执行一个操作 90 分钟,并且打开连接大约需要 3 毫秒,这只会浪费资源。

因此,只需根据需要创建上下文即可。接下来,请记住,尽管您打开上下文来收集数据或维护状态,但如果数据尚未准备好存储,您实际上并不需要保存数据。您可以将其存储在本地。

这是第 3 步的用武之地,使用本地内存。基本上你应该将它保存在本地内存中并附加一个事件处理程序。随着本地副本的更改,如果更改发生在某个可接受的时间窗口内,则更新数据库。

关于c# - 如何使用 Entity Framework 处理长时间运行的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com