EF Core SaveChanges拦截器怎么用 EF Core ISaveChangesInterceptor教程

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

EF Core SaveChanges拦截器怎么用 EF Core ISaveChangesInterceptor教程-第1张图片-佛山资讯网

SaveChanges拦截器是干什么的

它是在调用SaveChangesSaveChangesAsync前后自动触发的钩子,不用改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接口,重点关注两个方法:

标签: app sqlserver .net red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~