重写SaveChangesOnDbContextAsync方法后未被调用的问题
问题解决:ABP重写SaveChangesOnDbContextAsync未被调用
- 你的代码存在两个关键问题导致方法未被触发:
- 基类方法调用错误:你重写的是
SaveChangesOnDbContextAsync,但内部调用的是base.SaveChangesAsync(),这会绕开ABP的拦截逻辑,应当调用对应的基类方法base.SaveChangesOnDbContextAsync(acceptAllChangesOnSuccess, cancellationToken) - 参数传递缺失:你没有将重写方法接收的
acceptAllChangesOnSuccess和cancellationToken参数传递给基类方法,参数不匹配会导致框架无法正确路由到你的重写方法
- 基类方法调用错误:你重写的是
修正后的代码如下:
public override async Task<int> SaveChangesOnDbContextAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default) { // 可在此添加数据操作前的拦截逻辑,比如校验、修改实体等 var result = await base.SaveChangesOnDbContextAsync(acceptAllChangesOnSuccess, cancellationToken); // 也可在此处理保存完成后的逻辑 return result; }
另外需要注意:ABP框架中业务代码调用的SaveChangesAsync是经过封装的方法,它最终会触发SaveChangesOnDbContextAsync,确保业务逻辑中调用的是标准的SaveChangesAsync方法即可。
内容的提问来源于stack exchange,提问作者WilliamG
相关产品推荐
相关产品推荐

