Запрос строится следующим образом:
Код: Выделить всё
var query = entity1Repository.Include(x => x.Entity2)
.ThenInclude(x => x.Entity3)
.Include(x => ...)
[...]
.AsNoTracking()
.AsSplitQuery();
if ([condition])
{
query = query.Where(x => ... );
}
if([condition])
{
// There is this kind of case with order by in the query
query = query.Where(x => x.Entity2.OrderBy(x => x.CreationDate).FirstOrDefault().Prop == search.Prop.Value);
}
// [more filters]
// Navigation property value for entity2 exist
var image = await query.SingleAsync(x => x.Id == 1234);
// Navigation property value for entity2 missing for some entity1
var result = await query.ToListAsync();
При использовании .Single(x => x.Id == ...) свойства навигации загружаются корректно.
Без AsSplitQuery запрос работает нормально, если запрашивается мало данных, иначе время ожидания истекает, поэтому мы не можем удалите его.
Я использую EF Core 7.0.20, SQL Server и ASP.NET Core 6.
Конфигурация объекта работает нормально, здесь уже год не о чем сообщать.
Что может быть источником такого поведения?
Подробнее здесь: https://stackoverflow.com/questions/791 ... urn-specif