将已解析的Lambda表达式序列化到数据库

时间:2018-11-10 20:41:34

标签: c# dynamic expression

我有一些用户将通过简单的语句生成业务规则,从而导致对或错 示例:结果> 10和结果<100

我正在使用Linq.Dynamic转换这些语句,我发现ParseLambda花费的时间太长(简单的示例花费了21ms)。因此,我想将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);

0 个答案:

没有答案