Сериализация разобранного лямбда-выражения в базу данных - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть пользователи, которые будут генерировать бизнес-правила с помощью простых операторов, которые приводят к истине или ложи. Пример: Результат> 10 И Результат <100 </p>

Я использую Linq.Dynamic для преобразования этих операторов. Я нахожу ParseLambda.занимает слишком много времени (простой пример занял 21мс).Поэтому я хотел бы сохранить лямбда-выражение в базе данных для последующего использования.Из моего тестирования я обнаружил, что вызов ParseLambda занимает больше всего времени, поэтому мне интересно, можно ли сериализовать это лямбда-выражение и сохранить его в базе данных, извлекая его при необходимости.Идея состоит в том, чтобы сохранить его в базе данных уже проанализирован.

Может быть, это неправильный подход все вместе.Я думал об использовании 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);
...