在我创建的系统中,客户要求将对数据的所有更改记录到数据库表中 - 仅记录更改(即,如果他们只更改包含 10 个字段的表单上的 1 个值,它只会审核一项更改)。所以基本上我需要能够将旧值与新值进行比较。
这当然很容易 - 我以前做过,但它相当困惑 - 我会手动检查数据库中的每个字段并将其与新字段进行比较以决定是否应该对其进行审计。有没有更简单的方法,也许可以自动获取更改后的列名/值?还是我必须以我的“困惑”方式来做?
几乎所有要记录的更改都是使用 LINQ to SQL 完成的 - 所以也许有一种方法可以在调用提交更改之前将数据库表与修改后的表进行比较?
最佳答案
我使用了标题为 Automatic Event Logging in LINQ 的代码项目文章强>。这对我们来说非常有效,它也可以满足您的要求,只要记录更改即可。如果插入记录,则每个更新在数据库中显示为单独的行,跟踪 PK、字段名称、旧值和新值。当然,它还会跟踪执行操作的人员和时间。它跟踪所有操作:创建、读取、更新和删除。
此方法也满足您的要求,它动态包含所有表,每个表没有单独的方法。
关于c# - 使用 LINQ to SQL 记录更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092428/