SaveChanges拦截器是在调用SaveChanges或SaveChangesAsync前后自动触发的钩子,用于统一处理数据变更逻辑,如自动填充时间戳、审计日志、业务校验或阻止非法保存;通过AddInterceptors注册,实现ISaveChangesInterceptor接口的SavingChanges(保存前)和SavedChanges(保存后)方法。

SaveChanges拦截器是干什么的
它是在调用SaveChanges或SaveChangesAsync前后自动触发的钩子,不用改DbContext代码就能统一处理数据变更逻辑。比如自动填充创建/更新时间、记录谁改了数据、做业务校验、写审计日志,甚至临时阻止非法保存。
怎么注册一个SaveChangesInterceptor
在DI容器配置DbContext时,用AddInterceptors方法注入实现类:
- ASP.NET Core常规项目中,在
Program.cs里这样写:
services.AddDbContext(options =>
options.UseSqlServer(connectionString)
.AddInterceptors(new AuditSaveChangesInterceptor()));
- Aspire项目需用
ConfigureDbContext避免服务解析问题:
builder.ConfigureDbContext((provider, options) =>
options.AddInterceptors(provider.GetRequiredService()));
怎么写一个基础的拦截器
实现ISaveChangesInterceptor接口,重点关注两个方法:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~