如何保持数据的先前值和新值

本文关键字:新值 何保持 数据 | 更新日期: 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"。

我知道在数据库中保存这些完全松散类型的值感觉有点不对,但我相信这是唯一的方法,而不需要每个表的副本。