InvalidOperationException: возникло исключение при попытке оценить выражение параметра запроса LINQ. - PullRequest
0 голосов
/ 09 июля 2020

У меня проблема, в исходном коде запрос LINQ. После обновления до. net core 3.1 с версии 2.2.

    public IQueryable<Data.Model.Content> GetAll()
    {
        return dbContext.Content.Include(a => a.ContentTemplate);
    }

    public bool ExistsSlug(int id, string name)
    {
        return GetAll()
            .Any(x => x.Name.ToLower() == name.ToLower() && x.Id != id);
    }

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

lambda_method (Closure)

InvalidOperationException: возникло исключение при попытке оценить выражение параметра запроса LINQ. Чтобы отобразить дополнительную информацию, вызовите EnableSensitiveDataLogging () при переопределении DbContext.OnConfiguring.

Microsoft.EntityFrameworkCore.Query.Internal.ParameterExtractingExpressionVisitor.GetValue (выражение выражения, исходящее строковое имя параметра) * 101012 *

return GetAll().Any(x => x.Name.ToLower() == name.ToLower() && x.Id != id);
* 10 Linq.Queryable.Any (источник IQueryable, выражение > предикат)

lambda_method (Closure, object, object [])

Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute (объект target, object [] parameters)

1 Ответ

1 голос
/ 09 июля 2020

Я создал точный сценарий, который вы используете, с. net core 3.1.

единственный тестовый пример, который генерировал ту же ошибку, когда я отправил (NAME STRING NULL) ошибка, которую я получил

, вы можете обойти эту проблему, добавив в свой запрос условный оператор, например:

GetAll().Any(x=> (string.IsNullOrEmpty(name) || x.Name.ToLower() == name.ToLower()) && x.Id  != id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...