Orchard cms跟踪记录存储库,跟踪Audit Trail中的内容项
问题描述:
我正在使用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
,可以触发您的活动,只要你想跟踪变化:
答
要做到这一点,你必须添加从原来的一个继承新仓库实现,像这样。 然后,抑制原始的实现必须添加新的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 {
}
然后使用此属性检查记录类是否存在它,并根据它进行审计。
我找不到ContentDefinitionProviders,并且当我在调试时保存一条记录时,我发现它不会遇到任何Load()方法 –