首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Audit.NET -实体框架-如何实现OptOut

Audit.NET -实体框架-如何实现OptOut
EN

Stack Overflow用户
提问于 2020-07-20 16:14:47
回答 2查看 951关注 0票数 1

我正在使用Audit.NET和实体框架实现审计,使用运行.NET 4.6.1的MVC应用程序。我能够通过启动配置审计,以便它捕获审计信息并使用JSON示例将其记录到自定义的AuditLog表中来存储整个模型。目前,这个实现正在工作,但是,我希望能够使用OptOut,这样我就可以通过AuditInclude属性专门定义要审计的模型。

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

代码语言:javascript
复制
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

代码语言:javascript
复制
[AuditDbContext(Mode =AuditOptionMode.OptOut)]
    public class DbContext : AuditDbContext

有人知道如何用这种Audit.NET配置来实现Audit.NET吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-20 17:22:38

它不能工作的原因是我指定了不正确的AuditOptionMode。应该是AuditOptionMode.OptIn。我错误地认为,当您指定AuditOptionMode.OptOut时,它告诉框架您希望审计的OptOut。但是,这实际上告诉框架,您希望具体地对不希望被审计的任何实体进行OptOut。IntelliSense很好地解释了这一点,我只是错过了。

当这样做时,它通过属性定义工作,也通过gev125建议的构造函数工作。

代码语言:javascript
复制
[AuditDbContext(Mode = AuditOptionMode.OptIn)]

代码语言:javascript
复制
public DBContext() 
{
     Mode = AuditOptionMode.OptIn;
}
票数 0
EN

Stack Overflow用户

发布于 2020-07-20 16:22:00

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62999618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档