概述
在数据访问层中,过滤器(Data Filter) 用于自动应用全局查询条件,如软删除过滤、多租户隔离等。以下是禁用和启用过滤器的常用操作模式。
常用过滤器类型
| 过滤器名称 | 说明 |
|---|---|
FilterNames.Delete |
软删除过滤器(过滤已删除记录) |
FilterNames.Tenant |
多租户过滤器(隔离租户数据) |
操作示例
1️⃣ 禁用删除过滤器
临时查询包含已删除的记录:
1 | using var _ = _yourRep.DataFilter.Disable(FilterNames.Delete); |
适用场景:数据恢复、审计查询、管理员查看完整数据。
2️⃣ 仅开启删除过滤器(禁用其他所有)
先禁用全部,再单独启用删除过滤器:
1 | using var _ = _yourRep.DataFilter.DisableAll(); |
适用场景:需要精确控制过滤器组合时。
3️⃣ 禁用租户过滤器
临时跨租户查询数据:
1 | using var _ = _yourRep.DataFilter.Disable(FilterNames.Tenant); |
适用场景:超级管理员跨租户统计、数据迁移。
4️⃣ 禁用所有过滤器
完全无过滤的数据访问:
1 | using var _ = _yourRep.DataFilter.DisableAll(); |
适用场景:系统维护、数据导出、特殊报表。
⚠️ 重要注意事项
作用域管理
using语句确保过滤器状态在作用域结束时自动恢复- 避免手动管理过滤器状态,防止遗漏恢复
嵌套使用
- 支持多个过滤器同时操作
- 每个
using变量需独立命名(如_,__,___)
安全风险
| 风险点 | 建议措施 |
|---|---|
禁用 Tenant 过滤器可能导致数据泄露 |
仅在受控的管理场景中使用 |
禁用 Delete 过滤器可能暴露敏感数据 |
添加额外的权限校验 |
组合使用示例
1 | // 同时禁用删除和租户过滤,保留其他过滤器 |
快速参考
| 操作 | 代码 |
|---|---|
| 禁用单个过滤器 | _yourRep.DataFilter.Disable(FilterNames.Delete) |
| 启用单个过滤器 | _yourRep.DataFilter.Enable(FilterNames.Delete) |
| 禁用所有过滤器 | _yourRep.DataFilter.DisableAll() |
| 启用所有过滤器 | _yourRep.DataFilter.EnableAll() |
#中台/常见问题