c# - 使用 LINQ to SQL 记录更改

标签 c# asp.net linq linq-to-sql

在我创建的系统中,客户要求将对数据的所有更改记录到数据库表中 - 仅记录更改(即,如果他们只更改包含 10 个字段的表单上的 1 个值,它只会审核一项更改)。所以基本上我需要能够将旧值与新值进行比较。

这当然很容易 - 我以前做过,但它相当困惑 - 我会手动检查数据库中的每个字段并将其与新字段进行比较以决定是否应该对其进行审计。有没有更简单的方法,也许可以自动获取更改后的列名/值?还是我必须以我的“困惑”方式来做?

几乎所有要记录的更改都是使用 LINQ to SQL 完成的 - 所以也许有一种方法可以在调用提交更改之前将数据库表与修改后的表进行比较?

最佳答案

我使用了标题为 Automatic Event Logging in LINQ 的代码项目文章。这对我们来说非常有效,它也可以满足您的要求,只要记录更改即可。如果插入记录,则每个更新在数据库中显示为单独的行,跟踪 PK、字段名称、旧值和新值。当然,它还会跟踪执行操作的人员和时间。它跟踪所有操作:创建、读取、更新和删除。

此方法也满足您的要求,它动态包含所有表,每个表没有单独的方法。

关于c# - 使用 LINQ to SQL 记录更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092428/

相关文章:

c# - 在 Visual Studio 上将文件添加为链接 - 调试与发布

javascript - 单击按钮后一段时间后自动隐藏标签

javascript - JavaScript 中的 MVC "~"路径

c# - 如何在多个实体数据模型之间共享连接字符串

c# - 如何创建一个 'global' 变量来返回 linq 结果?

c# - 如何使.net winform 应用程序解析友好

c# - 如何在 XAML 中使用条件打印文本 block ?

c# - 在泛型类中需要一个真正的静态字段,否则如何保护它的可见性?

c# - ASP.NET Web-API OWIN : No HTTP resource was found that matches the request URI

c# - LINQ - 如何将 distinct 与 order by 一起使用?