我不得不在幾年前爲HR系統做這個。我完成有我所有的「域」實現的模板(通用)是:
這裏是我做了下調模板的一個例子:
class DataField<T>
{
public T Current { get; set; }
public T Original { get; set; }
// stores the field name as a nice textual readable representation.
// would default to property name if not defined.
public string FieldName { get; set; }
public bool Modified
{
get { return !(Current.Equals(Original));
}
public DataField(T value)
{
Original = Current = value;
}
public DataField(T value, T fieldName)
{
Original = Current = value;
FieldName = fieldName;
}
}
關於它的有趣的部分是由auditting方便的是,每個對象都可以生成它自己的審計日誌。我可以接受任何可能包含x個這些'字段'的對象,然後調用GetAudit,它將返回一個審計對象,其中包含顯示字段名稱,舊val,新val等的所有更改。每個'DataField'將實現一個返回審計對象的方法。對於字符串,雙精度,整數等,它幾乎已經被烘焙了,但是如果你使用了自定義對象,你可以爲它們編寫審計實現,只需要返回一個審計對象。
因此,在最後的典型形式中,我將所有數據存儲在一個具有所有這些類型字段的對象中。然後我會進行更新並調用GetAudit方法,該方法也將寫入審計表。
我可以很容易地分辨什麼形式發生了變化,即使他們不得不通過多個頁面等
撤消的是在逐個字段,逐節或整個對象級別真的很容易,以及。
對於確切的細節我幾乎沒有觸及代碼,但這是它的要點。希望有所幫助。
你認爲AOP已經? – Paco 2009-06-24 21:19:09