2016-05-30 97 views
1

我正在使用Orchard的Audit Trail模塊來跟蹤更改內容項。 () 但是,在我的項目中,我有一些只有記錄模型的對象(沒有零件模型),我使用Repository查詢並保存它們。在Audit Trail模塊中,它覆蓋Updating ),Updated()方法來跟蹤更改內容項目。Orchard cms跟蹤記錄存儲庫,跟蹤Audit Trail中的內容項

我想知道是否有類似的記錄存儲庫,因爲我也想跟蹤只使用記錄模型的對象。

例:

我有這些模型:InvoicePart,InvoicePartRecord,DetailRecord,ProductPart,ProductPartRecord

的發票有許多細節。

細節商店Invoice_Id & Product_Id,銷售人員可以將更多細節添加到發票中,或從發票中刪除它,或更改細節的Product_Id。

Orchard Audit Trail只能跟蹤發票&產品的更改,但不包含詳細信息,因爲它不是內容項目,所以我無法知道Detail何時創建,修改或刪除。這裏

public class MyRepository<T> : Repository<T>, IRepository<T> where T : class 

,可以觸發您的活動,只要你想跟蹤變化:

回答

1

要做到這一點,你必須添加從原來的一個繼承新倉庫實現,像這樣。 然後,抑制原始的實現必須添加新的Autofac模塊類:

public class DataModule : Module { 
    protected override void Load(ContainerBuilder builder) { 
     builder.RegisterGeneric(typeof(MyRepository<>)).As(typeof(IRepository<>)).InstancePerDependency(); 
    } 
} 

後,你可以處理這些事件,並進行審計,你會發現在Orchard.AuditTrail模塊ContentDefinitionProviders上這是一個很好的樣本。

注意:如果要指定有審覈啓用(這有用的,如果你不想在審覈系統中的所有記錄所有的變化)的記錄,你可以添加一個新的類屬性:

[AttributeUsage(AttributeTargets.Class)] 
public sealed class AuditTrailEnabledAttribute : Attribute { 
} 

然後使用此屬性檢查記錄類是否存在它,並根據它進行審計。

+0

我找不到ContentDefinitionProviders,並且當我在調試時保存一條記錄時,我發現它不會遇到任何Load()方法 –