SuperAPI AI 工具集

dotnet-audit-trail

编程与开发

查看项目

更新于 10-16 02:22

技能介绍

用途

dotnet-audit-trail 用于为 .NET 实体生成审计追踪基础设施,自动记录实体的创建与修改元数据,并支持软删除。它面向采用 Clean Architecture 分层的 .NET 项目,通过接口、基类与 EF Core 拦截器组合,减少手动编写审计逻辑的重复工作。

主要能力

  • IAuditable 接口:定义标准审计字段,包括 CreatedAtUtc、CreatedBy、UpdatedAtUtc、UpdatedBy。
  • ISoftDeletable 接口:定义软删除字段,包括 IsDeleted、DeletedAtUtc、DeletedBy。
  • AuditableEntity 基类:同时实现 IAuditable 与 ISoftDeletable,提供 SetCreatedAudit、SetModifiedAudit、SoftDelete、Restore 等方法。
  • AuditSaveChangesInterceptor:EF Core 的 SaveChanges 拦截器,在保存变更时自动填充审计字段;对新增实体设置创建审计,对修改实体设置修改审计,并将删除状态转换为软删除。
  • 用户上下文集成:通过 IUserContext 获取当前用户 ID,在后台任务等场景下可回退为 null。
  • EF Core 配置模板:提供 AuditableEntityConfiguration 泛型基类,统一配置审计字段列名、软删除全局查询过滤器与索引。
  • 可选完整历史记录:提供 AuditLog 实体与 AuditLogInterceptor 模板,用于存储变更前后的 JSON 值、受影响列、操作时间、用户与 IP 等信息。

使用方式

技能以模板形式给出代码结构,典型目录组织为:

  • /Domain/Abstractions/ 下放置 IAuditable.cs、ISoftDeletable.cs、AuditableEntity.cs
  • /Infrastructure/Interceptors/ 下放置 AuditSaveChangesInterceptor.cs
  • /Infrastructure/Configurations/ 下放置 AuditableEntityConfiguration.cs

使用步骤包括:在领域实体中继承 AuditableEntity;在实体配置中继承 AuditableEntityConfiguration 并调用 base.Configure;在 DbContext 注册时通过 options.AddInterceptors 添加 AuditSaveChangesInterceptor,并将拦截器注册为 Scoped 服务。审计字段由拦截器自动填充,实体创建与修改方法中无需手动设置。

适用场景

  • 需要记录数据创建者、修改者与时间戳的 .NET 业务系统。
  • 需要软删除而非物理删除、并希望查询自动过滤已删除数据的应用。
  • 采用 Clean Architecture 分层、使用 EF Core 与 PostgreSQL 等数据库的项目。
  • 需要可选完整变更历史(旧值、新值、受影响列)的合规或审计场景。

限制

资料未提供该技能的安装命令、包名、版本要求、支持的 .NET 版本、数据库兼容范围、性能影响说明、收费或授权信息。示例中使用了 PostgreSQL(UseNpgsql)与 IUserContext、Result 等自定义类型,实际使用时需按项目情况适配。完整历史记录部分(AuditLogInterceptor)的代码在资料中未完整给出。