Audit.NET配置后EntityFramework Core审计功能无法正常生效问题求助
你需要同时修改Persistence类库内容,并且在类库中安装Audit.EntityFramework.Core NuGet包,具体操作步骤如下:
- 第一步:在
Persistence类库中安装与API项目版本一致的Audit.EntityFramework.Core v18.1.3NuGet包,避免版本兼容问题。 - 第二步:修改
Persistence类库中的EntityContext上下文类,将其继承对象从原生DbContext替换为Audit.EntityFramework.AuditDbContext,示例修改如下:
// 修改前 public class EntityContext : DbContext { public EntityContext(DbContextOptions<EntityContext> options) : base(options) { } // 其余代码 } // 修改后 public class EntityContext : AuditDbContext { public EntityContext(DbContextOptions<EntityContext> options) : base(options) { } // 其余代码保持不变 }
- 第三步:确认你的API项目启动类(Startup.cs/Program.cs)中已经正确调用了你封装的
ConfigureAudit扩展方法。
如果修改后仍未生成EF审计日志,可做如下检查:
- 你当前配置的是
UseOptOut策略,默认所有实体都会触发审计,若你不需要审计某类实体,仅需给对应实体类添加[AuditIgnore]特性即可;如果需要仅审计指定实体,可将UseOptOut替换为UseOptIn,再给需要审计的实体添加[AuditInclude]特性。 - 可在你配置的
DynamicProvider的OnInsert委托中添加断点,确认执行EF增删改操作时,是否有EventType前缀为EF:的审计事件触发。
如果你不想修改DbContext的继承关系,也可以手动重写SaveChanges/SaveChangesAsync方法,在方法中插入审计触发逻辑,不过修改继承的方式代码侵入性更低,更推荐使用。
内容的提问来源于stack exchange,提问作者Randy
相关产品推荐
相关产品推荐

