dotnetcore / dotnetcore/FreeSql

GlobalFilter增加DynamicFilterInfo的动态复杂过滤器

Open
#2,107 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.4k
Forks
910
PR merge metrics
No merged PRs in 30d

Description

#### Feature 特性

```c#
IFreeSql.GlobalFilter.Apply(string name, DynamicFilterInfo filter)
```

#### 简要描述原因

目前Filter对于固定条件支持友好 而对于动态条件或复杂条件映射只能使用
```c#
IFreeSql.GlobalFilter.Apply("name", x => IFreeSql.DynamicFilter(x));
```
```c#
[ExpressionCall]
public static class FreeSqlDatabaseFunctionExtension
{
private static ThreadLocal context = new ThreadLocal();

public static bool DynamicFilter(this IFreeSql freeSql, object entity)
{
switch (context.Value!.DataType)
{
default:
{
context.Value.Result = "1=1";
return true;
}
}
}
}
```
过程中还需要手动解析条件表达式

#### 使用场景

对于多租户场景下可以通过动态配置 AsyncLocal> 实现数据权限动态管理

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.