自动记录对数据库中记录所做的更改

时间:2011-07-25 03:53:25

标签: c# asp.net sql sql-server database

我想知道实现这个的最佳方法是什么 基本上我们的项目要求记录对数据库中记录所做的任何更改。我已经使用Reflection和Generics在C#中完成了它,但我100%确定我使用了最好的方法。

有没有办法在SQL数据库中执行此操作?

关键是我们的项目工作方式,ObjectContext断开连接,因此我们无法使用内置的更改跟踪,并且必须对以前的日志项进行自己的比较。

5 个答案:

答案 0 :(得分:4)

您想查看数据库triggers

答案 1 :(得分:4)

如果您使用的是SQL Server 2008或更高版本,则可以直接在数据库上实现change trackingchange data capture。请注意,后者仅在企业版引擎中可用。每种方法都有利弊。您必须自己检查每个解决方案,因为问题中没有足够的需求信息。

如果您使用的是SQL Server 2005或更低版本,则必须采用基于触发器的解决方案,如其他答案所示。

答案 2 :(得分:0)

取决于您可以在相关表上的更新/插入/删除触发器上设置的数据模型的复杂性 - 这些触发器可以记录所需的任何内容(旧/新值,用户,时间戳等)...请参阅{{ 3}}

答案 3 :(得分:0)

查看我的博客,了解如何在不修改数据库方案的情况下跟踪数据更改: part1part2

答案 4 :(得分:0)

对于您的项目要求,SQL触发器是比当前C#反射更好的解决方案。 Becaz触发器为数据库管理系统提供了一种方法,可以在执行插入,更新或删除操作时主动控制,监视和管理一组表。此外,该要求在DataBase层本身完全填充,因此作为各种前端应用程序的单一解决方案托管。