Ho letto questo tutorial e questo article ma non capisco esattamente l'uso di ciascun tipo di caricamento.Caricamento Eager, Lazy ed esplicito in EF6
spiego
ho questo POCO:
public partial class dpc_gestion
{
public dpc_gestion()
{
this.ass_reunion_participant = new HashSet<ass_reunion_participant>();
this.dpc_participant = new HashSet<dpc_participant>();
this.dpc_reunion = new HashSet<dpc_reunion>();
}
public int dpc_id_pk { get; set; }
public Nullable<int> dpc_id_gdp_fk { get; set; }
public Nullable<int> dpc_id_theme { get; set; }
public int dpc_id_animateur_fk { get; set; }
public Nullable<System.DateTime> dpc_date_creation { get; set; }
public Nullable<System.DateTime> dpc_date_fin { get; set; }
public Nullable<System.DateTime> dpc_date_engag_anim { get; set; }
public Nullable<bool> dpc_flg_let_engag_anim { get; set; }
public Nullable<bool> dpc_flg_fsoins_anim { get; set; }
public virtual ICollection<ass_reunion_participant> ass_reunion_participant { get; set; }
public virtual theme_dpc theme_dpc { get; set; }
public virtual gdp_groupe_de_pair gdp_groupe_de_pair { get; set; }
public virtual ICollection<dpc_participant> dpc_participant { get; set; }
public virtual ICollection<dpc_reunion> dpc_reunion { get; set; }
}
ho capito questo:
Per pigro carico: perché il carico è pigro, se io chiamo il dbset
dpc_gestion
non tutte le proprietà di navigazione non essere caricato. Questo tipo di caricamento è il migliore in termini di prestazioni e reattività. Si è abilitata di default e se mi piacerebbe riabilitarla devo impostare:context.Configuration.ProxyCreationEnabled = true; context.Configuration.LazyLoadingEnabled = true;
Per l'eager loading Non è pigro: è caricato tutte le proprietà di navigazione quando carico
dpc_gestion
. Le proprietà di navigazione possono essere caricate utilizzando il metodoinclude
. Per abilitare questo tipo di carico:context.Configuration.LazyLoadingEnabled = false;
per il caricamento esplicito È come l'eager loading, ma usiamo
Load
metodo invece diinclude
.
Così mi piacerebbe sapere:
- Se questo piccolo curriculum è vero?
- Se è vero, qual è la differenza tra caricamento desideroso ed esplicito?
- Se utilizzo lazy caricando e chiamo per esempio
dpc_gestion.dpc_participant
, le proprietà di navigazione vengono caricate? O otterrò un'eccezione? - Esiste un caso in cui il caricamento ansioso o il caricamento esplicito sono risultati migliori di un caricamento lento in termini di prestazioni e reattività?
Grazie
@LamloumiAfif ... Un'altra cosa da notare è: il caricamento lento produrrà diverse richieste SQL mentre Eager carica i dati di carico con una richiesta. –
Inoltre, l'impostazione 'LazyLoadingEnabled = false' non abilita il caricamento di eager. Disattiva il caricamento lento. È possibile caricare carico utilizzando 'Include' quando è abilitato il caricamento lazy – Colin