首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#/ Server对象历史记录

C#/ Server对象历史记录
EN

Stack Overflow用户
提问于 2018-04-19 01:34:36
回答 1查看 43关注 0票数 0

在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"

  • 项目1: ID=1,name=“Thing1A”,cost=12.95
  • 项目2: ID=2,name="Thing 2Z",cost=7 -项目3: ID=3,name=“意外事件”,cost=1000

在用户保存了版本2之后,我想同时访问版本1和版本2的数据。

在我重新发明轮子之前,我想知道是否有人已经解决了这个问题的一个版本。也许是一个我不熟悉的设计模式,或者是一个框架,或者是一些我还没有想到的东西。有什么想法吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-04-19 01:42:57

我们的客户端应用程序有一个表单设计器类型视图,用户可以在其中创建表单、在其上放置控件、发布新的表单版本和部署已发布的表单。表单作为行存储在数据库中,其子表结构表示这些窗体上的控件。

我们选择将表单版本号列(整数)添加到表单表中。“工作”版本的表单版本号为0,即对该版本进行所有更改。当用户发布表单以生成新版本时,表单数据将被复制到带有下一个可用版本号的新行中。例如:

代码语言:javascript
运行
复制
create table VersionedTable
(
    RowId bigint identity(1,1) primary key clustered,
    VersionNo int not null check (VersionNo >= 0),
    ...
)

如果您正在寻找一个版本树,您可能会选择在每一行上都有一个父键。空父键可能表示树的根节点。没有子行的行是叶子。

代码语言:javascript
运行
复制
create table Node
(
    Id bigint identity(1,1) primary key clustered,
    ParentId bigint NULL,
    ...
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49911370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档