- 优化 GlobalFilter Apply 自动重命名表达式参数名,避免内容重复问题;

- 修复 表达式解析 Guid.NewGuid() 的错误;
This commit is contained in:
28810
2019-12-05 20:10:39 +08:00
parent e01f7a2061
commit 05cf13f560
14 changed files with 90 additions and 109 deletions

View File

@ -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)

View File

@ -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;
}