如何保持数据的先前值和新值
本文关键字:新值 何保持 数据 | 更新日期: 2023-09-27 18:19:36
我目前正在进行一个项目,我们需要归档和跟踪所有修改后的数据。
当修改投降时,我们必须保留这些信息
- 谁修改了数据
- 什么时候
- 这就是我问这个问题的原因:保留以前的以及数据的新值
很快,我必须跟踪每一个数据的每一次修改。
示例:我有一个名称字段为什么值为"Morgan"。
当我修改这个值时,我必须能够对用户说,1月6日,XXX,值从"Morgan"变为"Robert"…
我必须找到一个干净通用的方法来做这件事,因为这种行为涉及到大量的数据。
我的程序是用C#(.NET4)编写的,我们使用SqlServer2008R2和NHibernate进行对象映射。
关于如何做这样的事情,你有什么想法、经验或解决方案吗?
我有点困惑,你想在什么时候获得旧数据和新数据。但是,这可以在数据库触发器中完成,如以下问题所示:
触发器插入更新的旧值
NHibernate信封是您想要的:)
您必须使用NHibernate 3.2+(3.2是当前版本)。
它像一样简单
enversConf.Audit<Person>();
你可以在这里和这里获得信息
我也遇到过和你一样的情况。我最终这样做了:
在数据库中保存一个ActivityEntry
,该数据库包含一个标识列(如果您有多个更改的对象)、一个操作指示符(可以是"User changed firstname",作为int)、日期字段、userId以及最重要的参数字段。
结合参数字段和动作指示器的值,我可以生成类似"{0}将{1}的名字从{2}更改为{3}"的字符串,其中我的参数值可以是"John;Joe"。
我知道在数据库中保存这些完全松散类型的值感觉有点不对,但我相信这是唯一的方法,而不需要每个表的副本。