#c# #.net #entity-framework #orm #entity-framework-6
#c# #.net #entity-framework #orm #entity-framework-6
Вопрос:
Я был удивлен, увидев, что следующий код на самом деле не включает TheLinkedThing
:
await db.Set<TheThing>()
.Include(e => e.TheLinkedThing)
.SingleOrDefaultAsync(e => e.Id == someId);
Я вижу, что в профилировщике SQL join
оператор не генерируется. Однако следующий запрос работает так, как ожидалось:
await db.Set<TheThing>()
.Where(e => e.Id == someId)
.Include(e => e.TheLinkedThing)
.SingleOrDefaultAsync();
Почему это происходит? Я не могу найти в документации ничего, что объясняло бы это как ожидаемое поведение. Я использую последнюю версию 6.1.3, отложенная загрузка отключена.
Комментарии:
1. Действительно, странное поведение. Я просто попытался воспроизвести его, но потерпел неудачу. Профилировщик показывает, что создано ВНУТРЕННЕЕ СОЕДИНЕНИЕ.