Я немного озадачен тем, как работает Ленивая загрузка.
Например, если у меня есть объект поставщика, у которого в качестве свойства указан внешний объект Address, например:
public class Supplier
{
public int ID { get; set; }
[Required]
public string FullName { get; set; }
public string TaxNumber { get; set; }
public virtual Address DeliveryAddress { get; set; }
}
когда я ставлю точку останова на:
var suppliers = dbContext.Supplier.ToList();
Я вижу, что информация об адресе доступна поставщикам var и т. Д. Когда я расходую свойство DeliveryAddress, оно доступно, означает ли это, что весь объект FK был загружен? Но с другой стороны, для запроса справа я могу просмотреть его из Visual Studio в точке останова, и это так:
{SELECT
[Extent1].[ID] AS [ID],
[Extent1].[FullName] AS [FullName],
[Extent1].[TaxNumber] AS [TaxNumber],
[Extent1].[DeliveryAddress_ID] AS [DeliveryAddress_ID]
FROM [dbo].[Suppliers] AS [Extent1]}
Что означает, что сам запрос вообще не будет загружать объект Address?
Так, кто загружает объекты FK? ToList () или VS отладчик?
Другое предложение о том, как подтвердить, что это ленивая загрузка или нет?
Примечание: Итак, теперь я подтвердил, что отложенная загрузка работает двумя вызовами ToList: один отключил отложенную загрузку, а другой включил отложенную загрузку. Может кто-нибудь указать мне способ узнать, в какой момент при отложенной загрузке был отправлен другой запрос для свойства FK?