C# 如何保留数据的以前值和新值?
我目前正在做一个项目,我们需要归档和跟踪所有修改过的数据 当修改放弃时,我们必须保留这些信息C# 如何保留数据的以前值和新值?,c#,.net,sql-server-2008,nhibernate,trace,C#,.net,Sql Server 2008,Nhibernate,Trace,我目前正在做一个项目,我们需要归档和跟踪所有修改过的数据 当修改放弃时,我们必须保留这些信息 谁修改了数据 什么时候 这就是为什么我要问这个问题:保持前一个 以及数据的新值 很快,我必须跟踪每个数据的每次修改 示例: 我有一个名称字段,为什么值为“Morgan” 当我修改此值时,我必须能够告诉用户,1月6日,到XXX,值从“Morgan”更改为“Robert”… 我必须找到一个干净、通用的方法来实现这一点,因为大量数据都与此行为有关 我的程序是用C#(.NET4)编写的,我们使用SQLSer
- 谁修改了数据李>
- 什么时候李>
- 这就是为什么我要问这个问题:保持前一个 以及数据的新值
关于如何做这样的事情,你有什么想法、经验或解决方案吗?我有点困惑,你想在什么时候获得新旧数据。但是,这可以在数据库触发器内完成,如以下问题所示:
我的处境和你一样。我最终是这样做的: 在数据库中保存一个
ActivityEntry
,该数据库包含一个标识列(如果您有多个更改的对象)、一个操作指示符(可以是“User changed firstname”,作为int)、日期字段、userId和最重要的参数字段
结合参数字段和操作指示符中的值,我能够生成类似“{0}将{1}的名字从{2}更改为{3}”的字符串,其中我的参数值可以是“John;Joe”
我知道将这些完全松散类型的值保存在数据库中感觉有点不对劲,但我相信这是唯一的解决方法,没有每个表的副本。NHibernate Envers这就是你想要的:) 您必须使用NHibernate 3.2+(3.2是当前版本) 这很容易
enversConf.Audit<Person>();
enversConf.Audit();
您可以获取信息,非常感谢。用户需要查看每个数据上以前的所有更改。我试图找到不同的解决方案。触发器可能是最好的方法,但我想从其他DevThank获得反馈,以便您做出回应。每个新的ActivityEntry都是由数据库触发的,或者您实现了另一个解决方案来创建数据库条目?在我的解决方案(这并不完美)中,我只是有一个方法(使用
string
参数的和操作指示器),每当用户做某事时,我都会调用该方法。我认为,如果您能够了解用户所做的确切操作,就有可能实现自动化。谢谢您的回复。我会尽快试一试的!嗯,我只是看看你给我的资源,听起来很有希望!