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>
/// <param name="repository"></param>
/// <param name="action">禁止异步</param>
/// 禁用过滤运行 适用于更新和删除
/// </summary>
/// <param name="repository">repository</param>
/// <param name="action"></param>
/// <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(); // 清空并备份过滤器
action.Invoke();
repository.Context.QueryFilter.Restore(); // 还原过滤器
await repository.Context.RunWithoutFilter(action);
// 用例
//_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();
//});
}