Почему лямбда-выражение недопустимо в этом методе Include ()? - PullRequest
1 голос
/ 10 января 2020

Я впервые работаю с EFCore, после перехода с EF6, и по какой-то причине получаю эту ошибку:

System.InvalidOperationException: 'Лямбда-выражение, используемое внутри Include, не является Действительный. '

Вот мой контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        using (var IJ = IJContext.CreateNew(false))
        {
            var ChargeList = iJ.Charges.Where(charge => charge.CourtCase.CaseNumber == "13457894561")
                                             .Include(charge => charge.ChargeDate)
                                             .ToList();
            return View(ChargeList);
        }
    }
}

Я что-то упустил здесь? EFCore обрабатывает Lambdas совершенно по-другому или что-то?

Ответы [ 2 ]

1 голос
/ 10 января 2020

Кажется, что ChargeDate не является связанной сущностью. Проверьте документацию Retaled Entities, чтобы увидеть цель включения

Похоже, у вас либо нет связи между типами, и вы хотите использовать что-то вроде свойства select для получения новых объектов на основе данные уже получены из запроса.

0 голосов
/ 10 января 2020

Если вы посмотрите на сигнатуру метода расширения Include, он будет выглядеть следующим образом:

public static IIncludableQueryable<TEntity, TProperty> Include<TEntity, TProperty>( 
      this IQueryable<TEntity> source,
      Expression<Func<TEntity, TProperty>> navigationPropertyPath)
      where TEntity : class
{
       // Method body
}

Параметр navigationPropertyPath ожидает лямбда-выражения, представляющего свойство навигации, для загрузки данных для это свойство навигации. Но вы передаете свойство сущности ChangeDate, которое не является свойством навигации.

Для более подробной информации: EF Core Eager loading

...