refactor(Admin.NET.Core): 重构禁用过滤器方法RunWithoutFilter,支持异步

- 将 RunWithoutFilter 方法从同步改为异步,支持 Func<Task> 参数
- 添加了针对 ISqlSugarClient 的 RunWithoutFilter 扩展方法
- 优化了过滤器的清空和还原逻辑,确保不影响其他请求
- 更新了方法注释,明确了使用方式和注意事项
This commit is contained in:
skywolf627 2025-01-13 18:01:51 +08:00
parent 52d9f85382
commit 30cf4929fb

View File

@ -330,22 +330,40 @@ public static class RepositoryExtension
} }
/// <summary> /// <summary>
/// 禁用过滤器-适用于更新和删除操作(只对当前请求有效,禁止使用异步) /// 禁用过滤运行 适用于更新和删除
/// </summary> /// </summary>
/// <param name="repository"></param> /// <param name="repository">repository</param>
/// <param name="action">禁止异步</param> /// <param name="action"></param>
/// <returns></returns> /// <returns></returns>
public static void RunWithoutFilter(this ISugarRepository repository, Action action) public static async Task RunWithoutFilter(this ISugarRepository repository, Func<Task> action)
{ {
repository.Context.QueryFilter.ClearAndBackup(); // 清空并备份过滤器 await repository.Context.RunWithoutFilter(action);
action.Invoke();
repository.Context.QueryFilter.Restore(); // 还原过滤器
// 用例 // 用例
//_rep.RunWithoutFilter(() => //await _rep.RunWithoutFilter(async () =>
//{ //{
// 执行更新或者删除 // //执行数据库操作
// 禁止使用异步函数 // await _rep.AsQueryable().ToListAsync();
//});
}
/// <summary>
/// 禁用过滤运行 适用于更新和删除
/// </summary>
/// <param name="client">db</param>
/// <param name="action"></param>
/// <returns></returns>
public static async Task RunWithoutFilter(this ISqlSugarClient client, Func<Task> action)
{
var db = client.CopyNew();
// 清空并还原 ,不会影响其他请求,只是当前请求清空
db.QueryFilter.ClearAndBackup();//清空并备份过滤器
await action.Invoke();
db.QueryFilter.Restore();//还原过滤器
// 用例
//await _db.RunWithoutFilter(async () =>
//{
// //执行数据库操作
// await _db.Queryable<XXXXX>().ToListAsync();
//}); //});
} }