在C#/ Server应用程序中,我希望保存对象历史记录:
我的第1版数据如下:
PO: ID=1,name="PO",deliveryDate="1/1/2019“ 项目1: ID=1,name="Thing 1",cost=12.95 项目2: ID=2,name="Thing 2",cost=16.59
用户将编辑保存到PO和items之后,第2版如下所示:
PO: ID=1,name="PO Magnifique",deliverDate="1/2/2019"
在用户保存了版本2之后,我想同时访问版本1和版本2的数据。
在我重新发明轮子之前,我想知道是否有人已经解决了这个问题的一个版本。也许是一个我不熟悉的设计模式,或者是一个框架,或者是一些我还没有想到的东西。有什么想法吗?谢谢。
发布于 2018-04-19 01:42:57
我们的客户端应用程序有一个表单设计器类型视图,用户可以在其中创建表单、在其上放置控件、发布新的表单版本和部署已发布的表单。表单作为行存储在数据库中,其子表结构表示这些窗体上的控件。
我们选择将表单版本号列(整数)添加到表单表中。“工作”版本的表单版本号为0,即对该版本进行所有更改。当用户发布表单以生成新版本时,表单数据将被复制到带有下一个可用版本号的新行中。例如:
create table VersionedTable
(
RowId bigint identity(1,1) primary key clustered,
VersionNo int not null check (VersionNo >= 0),
...
)
如果您正在寻找一个版本树,您可能会选择在每一行上都有一个父键。空父键可能表示树的根节点。没有子行的行是叶子。
create table Node
(
Id bigint identity(1,1) primary key clustered,
ParentId bigint NULL,
...
)
https://stackoverflow.com/questions/49911370
复制相似问题