asp.net 在使用时间序列数据库时,是否有必要实现工作单元模式,(例如:influxDb)

k2fxgqgv  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(74)

我工作的项目使用EF的SQL数据库和infulx数据访问历史数据。我已经为SQL部分实现了工作模式单元:保存();但是我不确定在从influxDb访问数据的项目上实现工作单元是否是个好主意。Influx使用转换器和客户端操作,没有这样的saveChanges()方法。
我刚刚尝试了一个没有unti工作的存储库模式。

drkbr07n

drkbr07n1#

Repository可以在没有Unit Of Work的情况下工作,因此它也可以有保存方法。
工作单元模式用于涉及多个存储库(可能使用不同的数据上下文)的场景。它允许跟踪事务中所做的所有更改,直到调用Commit方法将这些更改持久化到数据库(在本例中是文件)。
当您使用“添加”、“更新”或“删除”操作与存储库交互时,工作单元仅通过将实体标记为“已添加”、“已删除”或“已更改”来修改实体的状态。但是,只有在调用Commit方法时,这些更改才会实际持久化。此时,工作单元遍历存储库并执行必要的持久性操作。
工作单元的行为取决于存储库是共享相同的数据上下文还是具有不同的数据上下文。当存储库共享相同的数据上下文时,工作单元可以直接使用该数据上下文,从而在访问和更新数据库或文件时提高性能。
另一方面,如果存储库具有不同的数据上下文,表示不同的数据库或文件,则Unit Of Work通过为同一TransactionScope中的每个存储库调用保存方法来处理持久性,从而确保以一致的方式提交所有更改。

相关问题