我正在使用Audit.NET和实体框架实现审计,使用运行.NET 4.6.1的MVC应用程序。我能够通过启动配置审计,以便它捕获审计信息并使用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配置来实现Audit.NET吗?
发布于 2020-07-20 17:22:38
它不能工作的原因是我指定了不正确的AuditOptionMode。应该是AuditOptionMode.OptIn。我错误地认为,当您指定AuditOptionMode.OptOut时,它告诉框架您希望审计的OptOut。但是,这实际上告诉框架,您希望具体地对不希望被审计的任何实体进行OptOut。IntelliSense很好地解释了这一点,我只是错过了。
当这样做时,它通过属性定义工作,也通过gev125建议的构造函数工作。
[AuditDbContext(Mode = AuditOptionMode.OptIn)]或
public DBContext()
{
Mode = AuditOptionMode.OptIn;
}发布于 2020-07-20 16:22:00
将Mode = AuditOptionMode.OptOut放在DbContext的构造函数中,而不是作为属性。
https://stackoverflow.com/questions/62999618
复制相似问题