如何使用EF.Functions评估Func <t,bool =“”>?

时间:2019-04-08 14:09:46

标签: c# entity-framework-core roslyn func csharpscript

我正在尝试用func<T, bool>中的EF.Functions.Like来评估CSharpScript.EvaluateAsync,但是在运行时出现错误(当前上下文中不存在名称'EF')调用GetPredicate()方法。

创建功能方法:

public static class Helper
{
    public static async Task<Func<T, bool>> GetPredicate<T>(string stringExpression)
            {
                ScriptOptions options = ScriptOptions.Default.AddReferences(references: typeof(T).Assembly);
                Func<T, bool> discountFilterExpression = await CSharpScript.EvaluateAsync<Func<T, bool>>(stringExpression, options);

                return discountFilterExpression;
            }
}

调用方法:

string expString = "x => EF.Functions.Like(x.CodeId, pattern) || EF.Functions.Like(x.Name, pattern) || EF.Functions.Like(x.CategoryId, pattern)";
Func<MyClass, bool> exp = await Helper.GetPredicate<MyClass>(expString);

该怎么做?

1 个答案:

答案 0 :(得分:2)

EF.Functions通常不应该被评估。

但是要回答您的具体问题,您需要将 reference 都添加到Microsoft.EntityFrameworkCore assembly import ({{1 }})的using 命名空间,例如

Microsoft.EntityFrameworkCore