gpt4 book ai didi

c# - 具有多级嵌套关系版本控制的对象

转载 作者:太空宇宙 更新时间:2023-11-03 15:56:34 25 4
gpt4 key购买 nike

我有一个复杂的对象结构,它具有描述产品配置的多层嵌套关系。配置超时更改,我需要能够在将来随时引用不同的配置。在任何时候,整个系统都链接到产品的特定版本,并以某种方式抽象到产品版本的整个概念。

实现这一点最直接的方法是在每次请求新版本时克隆产品的整个结构并将不同版本链接在一起。然而,这在数据库负载方面是否过大。有没有更好的方法?

我也考虑过单独跟踪更改并在请求版本时重建产品,但实现起来似乎相当复杂,并且要正确处理多层嵌套关系。

或者

在数据库中保存最少的元数据以跟踪版本并使用 GIT 等工具序列化整个产品结构。

最佳答案

VCS 工具不是为此目的而设计的。这是一个应用程序功能(版本历史),应该这样对待。实现这一点的正确方法是为每个版本化项目类型创建一个“存档”表,并通过 ID 将它们与当前“实际”项目相关联。

然后,每当项目发生变化时,在将对项目的更改提交到主项目表之前,获取其当前状态并更新存档。

重要的区别在于,这不是为您的C# 对象 存储版本历史记录的情况,它是用于存储概念性最终用户“项目”的版本历史记录的应用程序功能“在您的应用程序中。 “产品历史”和“产品对象历史”不是一回事;你想实现前者。您的对象状态和它们实际代表的项目是两个截然不同的事物。

像 Git 这样的版本控制工具用于存储应用程序本身的修订,而不是为应用程序使用的数据提供归档功能。属于数据库。

或者,如果问题是能够将您的数据回滚到特定时间点,那么这应该通过拍摄数据库的带有日期戳的快照来实现,可以根据需要换出,因为这完全是独立于应用程序本身。

关于c# - 具有多级嵌套关系版本控制的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23309255/

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