2016-06-06 62 views
5

Sto utilizzando le proprietà di classe mediante la riflessione in alcune operazioni, pertanto quando si utilizza l'istanza di DynamicProxy si causa il caricamento dell'intero DB. (Oltre 700 classi sono collegate tra loro).La proprietà Lazy Load caricata è stata caricata in EF6

È possibile verificare se la proprietà di carico pigro è caricata o meno? La disabilitazione della generazione dinamica del proxy (ProxyCreationEnabled = false) non è utilizzabile nel mio caso.

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;} 
} 

risposta

4

Sembra che siete alla ricerca di DbReferenceEntry<TEntity, TProperty>.IsLoaded o DbReferenceEntry.IsLoaded proprietà:

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

o

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

per il tipo di raccolta proprietà di navigazione, basta usare .Collection invece di .Reference.

+1

Grazie a @Ivan Stoev, come nota per il futuro, Funziona quando lo stato dell'oggetto non è Staccato. – hkutluay

+0

C'è un modo per controllarlo senza avere il contesto (ad esempio durante la convalida dell'entità)? – bubi

+1

@bubi Non direi assolutamente impossibile, ma sarebbe piuttosto difficile e deve comporre con internals EF. –