Я перенес веб-приложение ASP.NET Core 2.2 MVC в .NET Core 3.0. В некоторых случаях include не работает успешно.
var forms = _context.CheckInOutForm
.Include(x => x.Employee)
.AsQueryable();
// apply filter and sorting
forms = FilterForms(forms);
forms = SortForms(forms, sort);
// convert to viewmodel (database model as parameter in the constructer)
var items = forms.Select(x => new CheckInOutViewModel(x));
// load data for current page (with X.PagedList nuget package)
var pagedList = items.ToPagedList(pageNumber, pageSize);
По какой-то причине EF создает запрос для таблицы CheckInOutForm с внутренним объединением с Employee, но выбирает только поля из таблицы CheckInOutForm. Я перехватил сгенерированный запрос с помощью профилировщика SQL и проанализировал его.
Этот код работал до миграции. Я читал, что EF Core 3.0 изменил поведение объединения таблиц. Я до сих пор не понимаю, почему он создает выборку с полями только одной таблицы.
items.ToPagedList создает выбор с помощью OFFSET и FETCH NEXT. Эта же библиотека работает и на других страницах этого же приложения.
Любые советы или идеи?