Проверить свойство Lazy Load загружено в EF6

Я использую свойства класса путем отражения в некоторых операциях, поэтому при использовании экземпляра DynamicProxy он заставляет загружать всю БД. (Более 700 классов связаны друг с другом).

можно ли проверить, загружено ли свойство lazy load или нет? Отключение генерации динамических прокси (ProxyCreationEnabled = false) не используется в моем случае.

Customer oCustomer = context.get(1);

if(oCustomer.Location.HasLoaded)
   do smt..

public class Customer
{
    public decimal? Id {get; set;}
    public virtual CustomerLocation Location{get; set;}
}

public class CustomerLocation
{
    public decimal? Id {get; set;}
    public string Detail {get; set;}
}

1 ответов


похоже, вы ищете для DbReferenceEntry.IsLoaded или DbReferenceEntry.IsLoaded свойства:

if (context.Entry(oCustomer).Reference(e => e.Location).IsLoaded)

или

if (context.Entry(oCustomer).Reference("Location").IsLoaded)

для свойств навигации типа коллекции просто используйте .Collection вместо .Reference.