c# - 将解析的 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);
解决方案
推荐阅读
- r - 根据列值从 R 中的数据框中删除行
- c# - 日期格式:方法“ToString”没有重载需要 1 个参数
- javascript - 如何在 nodejs/lambda - api 网关中保存应用程序状态中的变量值?
- kubernetes - 即使就绪探测失败,部署也能完成吗
- axios - CSRF 的拦截器?
- react-native - 尝试在苹果设备中使用 Google 联合登录时反应本机 Expo 错误
- excel - 从 MS Excel 中的 STOCKHISTORY 函数获取最近 25 天的最低价
- javascript - 如何在加载时模拟移动设备上的点击事件
- airflow - 带有 postgres 的 Airflow 的“db init”
- sql - 尝试使用标识列添加新条目时,EF6 引发并发异常