【问题标题】:Audit.NET - Entity Framework - How to Implement OptOutAudit.NET - 实体框架 - 如何实现 OptOut
【发布时间】:2020-07-24 04:12:18
【问题描述】:

我正在使用运行 .NET 4.6.1 的 MVC 应用程序使用 Audit.NET 和实体框架实施审计。我能够通过启动配置审计,以便它捕获审计信息并使用 JSON 示例将其记录到自定义 AuditLog 表中以存储整个模型。目前此实现正在运行,但是,我希望能够使用 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?

【问题讨论】:

    标签: c# audit.net


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议。这让我弄清楚了这个问题。最终它不起作用,因为我指定了不正确的 AuditOptionMode。它应该是 AuditOptionMode.OptIn。这样做时,它通过 Attribute 和构造函数工作。
    • 优秀。我从未见过它通过属性完成。我通常在构造函数中配置几个设置,这就是其中之一。很高兴你成功了。
    【解决方案2】:

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

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

    [AuditDbContext(Mode = AuditOptionMode.OptIn)]
    

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

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多