Как оценить Funcс использованием EF.Functions? - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь оценить func<T, bool> с EF.Functions.Like в CSharpScript.EvaluateAsync, но у меня есть ошибка во время выполнения (имя 'EF' не существует в текущем контексте) при вызове метода GetPredicate().

Создать метод Func:

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 Ответ

2 голосов
/ 08 апреля 2019

EF.Functions обычно не предполагается оценивать.

Но чтобы ответить на ваш конкретный вопрос, вам нужно добавить ссылка к Microsoft.EntityFrameworkCore сборка и импорт (using) изMicrosoft.EntityFrameworkCore пространство имен , например

ScriptOptions options = ScriptOptions.Default
    .AddReferences(references: typeof(T).Assembly)
    .AddReferences(typeof(EF).Assembly) // <--
    .AddImports(typeof(EF).Namespace); // <--
...