【问题标题】:What's the best way to implement tracking changes on your entities?在您的实体上实施跟踪更改的最佳方式是什么?
【发布时间】:2010-12-11 14:30:22
【问题描述】:

要求是跟踪对一个实体所做的所有更改,跟踪它以了解是谁做的,他什么时候做的等等。例如,我有一个 Person 实体,并且一个用户更改了这个人的名字;我想把这些信息保存在某个地方。

最好的方法是什么?或者是否有一个现有的框架来实现这一点。

我知道 SQL 2008 支持跟踪更改,但目前还不能选择,因为我们的许多客户已经在使用 SQL 2005。

Enterprise Library 的日志记录应用程序块是否适合此要求?我已经检查了一点,但我不知道如何使用它来跟踪谁做的,什么价值发生了变化,他什么时候做的,等等。

我们正在为我们的应用程序使用 C# 和 .NET 框架。

【问题讨论】:

标签: c#


【解决方案1】:

Standrad 方法是使用来自 INotifyPropertyChanging 和 INotifyPropertyChanged 接口的事件。对于集合 INotifyCollectionChanged。订阅此事件后,您可以在任何地方存储信息。

如果你使用 MSSQL 你可以试试Query Notifications

【讨论】:

    【解决方案2】:

    某种 AOP 解决方案(如企业库中的那个)应该为您提供足够的可能性来创建这样的解决方案。

    您可以订阅属性调用方法并记录信息。

    【讨论】:

    • AOP 代表面向方面的编程。
    • 您将有一个表示业务对象更改的方面。您可以定义更改属性时必须调用的函数。因此,您可以在业务代码中添加日志记录,因此不仅在进行数据库查询时,而且在您的业务层中也可以。
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2022-11-09
    相关资源
    最近更新 更多