Работа Lazy Loading при активном AsNoTracking
Загружаю сущность с использованием AsNoTracking
:
var task = await _context.Tasks.AsNoTracking().FirstOrDefaultAsync(x => x.Id == Guid.Parse("31797f2f-1116-48c0-90c9-acd428091939"), cancellationToken);
Далее, от загруженной сущности обращаюсь к связанной, которая ранее не была подгружена:
var document = task.Document;
В результате вижу, что task.Document
без проблем подгружается, при этом сущности действительно не отслеживаются, но Lazy Loader для них работает, как так происходит?
Для task.Document
действительно уходит отдельный запрос, он не был подгружен ранее.
Это типичное поведение EF Core, раньше подобного не замечал. Либо это работает только для сущностей, которые были подгружены из БД, а для вручную созданных такое не сработает?
Версия нугета EF Core: 8.0.6
P.S. На самом деле, мне такое поведение очень даже нравится, мне просто интересно, не временное ли это явление и так специально заложили или нет.
Источник: Stack Overflow на русском