首页 > 解决方案 > 将解析的 Lambda 表达式序列化到数据库

问题描述

我有用户将通过导致真假的简单语句生成业务规则示例:结果 > 10 AND Result < 100

我正在使用 Linq.Dynamic 来转换这些语句,我发现 ParseLambda 花费的时间太长(简单示例花费了 21 毫秒)。所以我想将 Lambda 表达式保存到数据库中以供以后提取和使用。从我的测试中我发现对 ParseLambda 的调用花费的时间最多,因此我想知道是否可以序列化这个 Lambda 表达式并在需要时将其持久化到数据库中。这个想法是将它保存到已经解析的数据库中。

也许这是错误的方法。我考虑过使用 CodeDom 和脚本,但发现我必须为每条规则创建一个程序集,这会污染 AppDomain,我可能有超过 1000 条规则。

我对其他选择持开放态度,也许那里有更好的图书馆。

ParameterExpression P = Expression.Parameter(typeof(InternalEvalData), _ParameterHeading);
LambdaExpression X = System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { P }, null, parsedExpression);
result = (bool)d.DynamicInvoke(testData);

标签: c#dynamicexpression

解决方案


推荐阅读