Serialize a Parsed Lambda Expression to Database
up vote
1
down vote
favorite
I have users who will generate business rules via simple statements that result in true or false
Example: Result > 10 AND Result < 100
I am using Linq.Dynamic to convert these statements I am finding the ParseLambda is taking too long (simple example took 21ms). So I would like to save the Lambda Expression to the database to pull and use later. From my testing I have found the call to ParseLambda is taking the most time, therefore I am wondering if it is possible to serialize this Lambda Expression and persist to a database pulling it when needed. The idea is to have it saved to the database already parsed.
Maybe this is the wrong approach all together. I thought about using CodeDom and scripting but found I would have to create an assembly for every rule, which would pollute the AppDomain, I could have over 1000 rules.
I am open to other options, maybe there is a better library out there.
ParameterExpression P = Expression.Parameter(typeof(InternalEvalData), _ParameterHeading);
LambdaExpression X = System.Linq.Dynamic.DynamicExpression.ParseLambda(new P , null, parsedExpression);
result = (bool)d.DynamicInvoke(testData);
c# dynamic expression
add a comment |
up vote
1
down vote
favorite
I have users who will generate business rules via simple statements that result in true or false
Example: Result > 10 AND Result < 100
I am using Linq.Dynamic to convert these statements I am finding the ParseLambda is taking too long (simple example took 21ms). So I would like to save the Lambda Expression to the database to pull and use later. From my testing I have found the call to ParseLambda is taking the most time, therefore I am wondering if it is possible to serialize this Lambda Expression and persist to a database pulling it when needed. The idea is to have it saved to the database already parsed.
Maybe this is the wrong approach all together. I thought about using CodeDom and scripting but found I would have to create an assembly for every rule, which would pollute the AppDomain, I could have over 1000 rules.
I am open to other options, maybe there is a better library out there.
ParameterExpression P = Expression.Parameter(typeof(InternalEvalData), _ParameterHeading);
LambdaExpression X = System.Linq.Dynamic.DynamicExpression.ParseLambda(new P , null, parsedExpression);
result = (bool)d.DynamicInvoke(testData);
c# dynamic expression
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have users who will generate business rules via simple statements that result in true or false
Example: Result > 10 AND Result < 100
I am using Linq.Dynamic to convert these statements I am finding the ParseLambda is taking too long (simple example took 21ms). So I would like to save the Lambda Expression to the database to pull and use later. From my testing I have found the call to ParseLambda is taking the most time, therefore I am wondering if it is possible to serialize this Lambda Expression and persist to a database pulling it when needed. The idea is to have it saved to the database already parsed.
Maybe this is the wrong approach all together. I thought about using CodeDom and scripting but found I would have to create an assembly for every rule, which would pollute the AppDomain, I could have over 1000 rules.
I am open to other options, maybe there is a better library out there.
ParameterExpression P = Expression.Parameter(typeof(InternalEvalData), _ParameterHeading);
LambdaExpression X = System.Linq.Dynamic.DynamicExpression.ParseLambda(new P , null, parsedExpression);
result = (bool)d.DynamicInvoke(testData);
c# dynamic expression
I have users who will generate business rules via simple statements that result in true or false
Example: Result > 10 AND Result < 100
I am using Linq.Dynamic to convert these statements I am finding the ParseLambda is taking too long (simple example took 21ms). So I would like to save the Lambda Expression to the database to pull and use later. From my testing I have found the call to ParseLambda is taking the most time, therefore I am wondering if it is possible to serialize this Lambda Expression and persist to a database pulling it when needed. The idea is to have it saved to the database already parsed.
Maybe this is the wrong approach all together. I thought about using CodeDom and scripting but found I would have to create an assembly for every rule, which would pollute the AppDomain, I could have over 1000 rules.
I am open to other options, maybe there is a better library out there.
ParameterExpression P = Expression.Parameter(typeof(InternalEvalData), _ParameterHeading);
LambdaExpression X = System.Linq.Dynamic.DynamicExpression.ParseLambda(new P , null, parsedExpression);
result = (bool)d.DynamicInvoke(testData);
c# dynamic expression
c# dynamic expression
asked Nov 10 at 20:41
Steve S
94212
94212
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53243214%2fserialize-a-parsed-lambda-expression-to-database%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown