mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
- 优化 GlobalFilter Apply 自动重命名表达式参数名,避免内容重复问题;
- 修复 表达式解析 Guid.NewGuid() 的错误;
This commit is contained in:
@ -1335,7 +1335,7 @@ namespace FreeSql.Internal
|
||||
}
|
||||
return null;
|
||||
}
|
||||
class ReplaceVisitor : ExpressionVisitor
|
||||
internal class ReplaceVisitor : ExpressionVisitor
|
||||
{
|
||||
private ParameterExpression parameter;
|
||||
public Expression Modify(Expression expression, ParameterExpression parameter)
|
||||
|
@ -32,7 +32,13 @@ namespace FreeSql.Internal
|
||||
|
||||
_filters.TryGetValue(name, out var item);
|
||||
if (item == null) item = new Item { Id = ++_id, Name = name };
|
||||
item.Where = where;
|
||||
|
||||
var newParameter = Expression.Parameter(typeof(TEntity), $"gf{_id}");
|
||||
var newlambda = Expression.Lambda<Func<TEntity, bool>>(
|
||||
new CommonExpression.ReplaceVisitor().Modify(where.Body, newParameter),
|
||||
newParameter
|
||||
);
|
||||
item.Where = newlambda;
|
||||
_filters.AddOrUpdate(name, item, (_, __) => item);
|
||||
return this;
|
||||
}
|
||||
|
Reference in New Issue
Block a user