refactor(Admin.NET.Core): 重构禁用过滤器方法RunWithoutFilter,支持异步
- 将 RunWithoutFilter 方法从同步改为异步,支持 Func<Task> 参数 - 添加了针对 ISqlSugarClient 的 RunWithoutFilter 扩展方法 - 优化了过滤器的清空和还原逻辑,确保不影响其他请求 - 更新了方法注释,明确了使用方式和注意事项
This commit is contained in:
parent
52d9f85382
commit
30cf4929fb
@ -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();
|
||||
//});
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user