假设您使用的是关系数据库,您可以简单地对插入、更新和删除事件的触发器进行编码,以在另一个表中写入一个操作或其他操作。
据我说,使用与记录的原始数据表具有相同定义的历史表的想法也是一个好主意。这使您可以尽可能地保持原始表的轻量级,从而提高 DQL 在数据库中表上的性能,并且在将 Delete 事件跟踪到意外删除的记录时,您无需获取每条记录由用户。
另一种方法是,根据每天处理的行数,您可以简单地将字段标记为真或假,无论它是否被删除,并添加一个应该保存当前执行操作的列。假设您将数据库配置为使用 Active Directory,以便您可以精确识别当前用户。
在写作的时候,我突然想到了另一个想法。您可能已经自己考虑过了!:-) 无论如何,您自己构建了一个管理安全问题的 DLL。在您的代码中,您可以简单地传递一个参数,其中包含通过您的安全 DLL 标识的当前登录用户。
不管怎样,log4net 是我认为的好方法。您可能会将每个用户的事件记录到 SQLite 数据库中,这是个人版的免费数据库。如果我没记错的话,Microsoft Enterprise Library 4.1 - 2008 年 10 月提供了非常有用的工具,而对于程序员来说,需要反复重做的东西很快就会变得乏味。MEL 专门设计用于使这些可重复的例程更容易避免一遍又一遍地重写代码的痛苦。这使您可以专注于对您的客户重要的功能和要求。它是开源的,由微软根据 IBM、HP 和其他类似这样的大公司的需求进行维护。也许有些是我们仍然忽略的存在。无论如何,我认为企业库可能是最好的选择,
如果您习惯于反射,您还可以通过反射来初始化对象的实例,并在保存的同时拥有一个同时记录的例程。
如您所见,有很多方法可以让您轻松实现。这完全取决于您的架构。
好吧,我看到我写了很多。我希望不会让任何人感到厌烦!:-)
祝你今天过得愉快!