我正在做一个将被许多用户使用的商业应用程序。用户必须登录,系统才能获得他可以访问的表格。
现在,我需要记录他所做的每一个动作。当我说每一个动作时,我的意思是在实体中完成的每一个 AMD(添加-修改-删除)。另外,我想记录他更改/添加/删除了哪些字段及其值。(以防万一,我正在使用实体框架 4)
我正在考虑类似于版本控制的实现。
我的想法是这样做:
每当用户在某些重要实体中执行 AMD 时,我都会添加一个日志条目。在该日志条目中,我将拥有 id_entity_type,它与我正在保存的实体类型有关。(例如:客户、贷款、银行等)。每种类型都将保存在 Entity_type 中。我将不得不在 C# 中检查我正在使用哪种实体来寻找正确的实体。id_entity 是该实体的 ID。id_action_type 是用户执行的操作类型(例如“CREATE”/“UPDATE/“DELETE”)id_user 与用户相关。date_time 以日期和时间记录条目。这是重要的事情:
值,是包含当时实体的所有字段和值的文本。这是一个例子:
实体客户:
- 姓名:约翰
- 姓氏:Doe
- 地址:橡树街 123 号
- 城市:布宜诺斯艾利斯
- 国家 : 阿根廷
然后,在另一个日志条目中,另一个用户将国家更新为 USA
- 姓名:约翰
- 姓氏:Doe
- 地址:橡树街 123 号
- 城市:布宜诺斯艾利斯
- 国家 : 美国
然后,当用户想要检查实体的变化时,他可以通过一个TextDiff(类似于版本控制器)看到实体随着时间的变化。
如果这是实现这一目标的好方法,我想得到一些建议。
我知道数据库的触发器可以用来保存这个日志。我对此知之甚少,但我想我需要为我拥有的每个实体创建一个日志表。
请如果有人知道什么是这样做的好方法,我会很棒。