如何用Audit.NET轻松实现Entity Framework数据库操作审计【免费下载链接】Audit.NETAn extensible framework to audit executing operations in .NET项目地址: https://gitcode.com/gh_mirrors/au/Audit.NETAudit.NET是一个功能强大的开源框架专为.NET应用程序设计能够轻松实现对Entity Framework数据库操作的全面审计跟踪。通过简单的配置开发人员可以自动记录数据变更历史、追踪操作详情并满足合规性要求。 为什么选择Audit.NET进行EF审计在现代应用开发中数据库操作审计是确保数据完整性和满足合规要求的关键环节。Audit.NET提供了以下核心优势零侵入设计无需修改现有数据访问代码即可实现审计全面跟踪能力记录实体创建、更新、删除的完整变更历史灵活配置选项可自定义审计范围、包含/排除特定实体或属性多存储支持审计日志可保存到数据库、文件、Elasticsearch等多种目标 快速开始3步实现EF审计1️⃣ 安装必要的NuGet包通过NuGet安装Audit.NET核心包和Entity Framework集成包Install-Package Audit.NET Install-Package Audit.EntityFramework2️⃣ 配置DbContext继承AuditDbContext修改你的DbContext类使其继承自AuditDbContext而非原生DbContextusing Audit.EntityFramework; public class AppDbContext : AuditDbContext { public AppDbContext(DbContextOptionsAppDbContext options) : base(options) { } public DbSetProduct Products { get; set; } public DbSetOrder Orders { get; set; } }核心实现位于src/Audit.EntityFramework/AuditDbContext.cs这个抽象类封装了所有审计逻辑。3️⃣ 基础配置可选通过代码或配置文件设置审计行为Audit.Core.Configuration.Setup() .UseEntityFramework(x x .AuditTypeMapper(t typeof(AuditLog)) .AuditEntityAction((evt, entry, auditEntity) { var audit (AuditLog)auditEntity; audit.AuditDate DateTime.UtcNow; audit.UserId CurrentUser.Id; audit.TableName entry.EntityType.Name; audit.OldValues entry.OldValues; audit.NewValues entry.NewValues; }) .IgnoreMatchedProperties());⚙️ 高级配置选项实体级审计控制使用AuditDbContextAttribute特性控制整个DbContext的审计行为[AuditDbContext(Mode AuditOptionMode.OptIn)] public class AppDbContext : AuditDbContext { // 上下文实现... }该特性定义在src/Audit.EntityFramework/AuditDbContextAttribute.cs支持多种配置参数。属性级包含/排除通过数据注解控制特定属性的审计行为public class Product { public int Id { get; set; } public string Name { get; set; } [AuditIgnore] // 排除此字段的审计 public string InternalNotes { get; set; } [AuditInclude] // 显式包含此字段在OptIn模式下 public decimal Price { get; set; } }自定义审计事件处理重写OnScopeCreated、OnScopeSaving或OnScopeSaved方法自定义审计行为public override void OnScopeCreated(IAuditScope auditScope) { // 添加自定义字段 auditScope.SetCustomField(ApplicationVersion, 1.0.0); auditScope.SetCustomField(MachineName, Environment.MachineName); } 实用技巧临时禁用审计设置AuditDisabled属性临时关闭审计using (var context new AppDbContext(options)) { context.AuditDisabled true; // 执行不需要审计的操作 }获取审计结果使用SaveChangesGetAudit方法获取审计事件var auditEvent context.SaveChangesGetAudit(); Console.WriteLine(auditEvent.ToJson());添加自定义字段使用AddAuditCustomField方法添加业务相关信息context.AddAuditCustomField(TransactionId, Guid.NewGuid().ToString()); context.SaveChanges(); 总结Audit.NET为Entity Framework提供了简单而强大的审计解决方案通过继承AuditDbContext和简单配置即可实现全面的数据库操作审计。无论是小型应用还是企业级系统Audit.NET都能满足数据跟踪和合规需求帮助开发人员构建更安全、更可靠的应用程序。要了解更多高级功能和配置选项请参考项目源代码中的src/Audit.EntityFramework目录其中包含了完整的实现和示例。【免费下载链接】Audit.NETAn extensible framework to audit executing operations in .NET项目地址: https://gitcode.com/gh_mirrors/au/Audit.NET创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考