Audit.NET - Entity Framework - 如何实施 OptOut

Audit.NET - Entity Framework - How to Implement OptOut

我正在使用 Audit.NET 和 Entity Framework 使用 MVC 应用程序 运行 .NET 4.6.1 实施审计。我能够通过启动配置审计,以便它捕获审计信息并使用 JSON 示例将其记录到自定义 AuditLog table 以存储整个模型。目前此实现正在运行,但是,我希望能够使用 OptOut,以便我可以通过 [AuditInclude] 属性专门定义要审核的模型。

下面是我的审计配置代码,我已将上下文定义为 OptOut,但它仍在记录所有数据库交互。

Audit.Core.Configuration.Setup()
                    .UseEntityFramework(ef => ef
                        .AuditTypeMapper(t => typeof(AuditLog))
                        .AuditEntityAction<AuditLog>((ev, entry, entity) =>
                        {
                            entity.AuditData = entry.ToJson();
                            entity.EntityType = entry.EntityType.Name;
                            entity.AuditDate = DateTime.Now;
                            entity.AuditUser = Environment.UserName;
                            entity.TablePk = entry.PrimaryKey.First().Value.ToString();
                        })
                    .IgnoreMatchedProperties(true));

DBContext

[AuditDbContext(Mode =AuditOptionMode.OptOut)]
    public class DbContext : AuditDbContext

有谁知道如何使用 Audit.NET 的这种配置实现 OptOut?

将 Mode = AuditOptionMode.OptOut 放入 DbContext 的构造函数中,而不是作为属性。

它不起作用的原因是我指定了不正确的 AuditOptionMode。应该是AuditOptionMode.OptIn。我错误地认为,当您指定 AuditOptionMode.OptOut 时,它是在告诉框架您想要退出审核。但是,这实际上告诉框架您希望专门 OptOut 任何您不想被审计的实体。 IntelliSense 很好地解释了这一点,我只是错过了它。

执行此操作时,它通过属性定义以及 gev125 建议的构造函数工作。

[AuditDbContext(Mode = AuditOptionMode.OptIn)]

public DBContext() 
{
     Mode = AuditOptionMode.OptIn;
}