我目前正在开展一个项目,我们需要存档和跟踪所有已修改的数据。
当修改投降时,我们必须保留这些信息
很快,我必须跟踪每个数据的每个修改。
示例: 我有一个名字字段为什么价值“摩根”。
当我修改此值时,我必须能够向用户说明1月6日,XXX,值从“Morgan”更改为“Robert”......
我必须找到一个干净且通用的方法来执行此操作,因为此行为会涉及大量数据。
我的程序在C#(.NET 4)中,我们使用Sql Server 2008 R2和NHibernate进行对象映射。
关于如何做这样的事情,你有任何想法,经验或解决方案吗?
答案 0 :(得分:1)
我对您希望获得旧数据和新数据的时间点感到困惑。但是,这可以在数据库触发器中完成,如下面的问题所示:
答案 1 :(得分:1)
NHibernate让你想要的东西:)
您必须使用NHibernate 3.2+(3.2是当前版本)。
很容易就像
enversConf.Audit<Person>();
答案 2 :(得分:0)
我和你一样处于同样的境地。我最终以这种方式做了:
在包含标识列的数据库中保存ActivityEntry
(如果有多个对象可以更改),操作指示符(可以是“用户更改的名字”,作为int),日期字段,userId和最重要的参数字段。
组合参数字段和动作指示器中的值我能够使“{0}将{1}的名字从{2}更改为{3}”这样的字符串,其中我的参数值可以是“约翰;乔”
。我知道在数据库中保存这些完全松散类型的值感觉有点不对,但我相信这是唯一的方法,没有每个表的副本。