2014-09-08 16 views
9

Nel vostro DbContext è possibile configurare i seguenti due parametri:EF 6.1 Differenza tra ProxyCreationEnabled e LazyLoadingEnabled

context.Configuration.ProxyCreationEnabled = true; 
context.Configuration.LazyLoadingEnabled = true; 

mia comprensione è che per consentire il caricamento pigro si deve essere in grado di creare i proxy per le entità. In altre parole, entrambi i parametri devono essere impostati su true per abilitare il caricamento lazy.

1. Perché esistono entrambi i parametri e perché è possibile configurare entrambi i parametri?

2. Quali sarebbero gli effetti delle seguenti configurazioni?

// Can't create proxies but can lazy load 
context.Configuration.ProxyCreationEnabled = false; 
context.Configuration.LazyLoadingEnabled = true; 

// Can create proxies but can't lazy load 
context.Configuration.ProxyCreationEnabled = true; 
context.Configuration.LazyLoadingEnabled = false; 
+0

è http://stackoverflow.com/questions/4596371/what-are-the-downsides-to-turning-off-proxycreationenabled-for-ctp5-of- ef-code-f la risposta? – tschmit007

risposta

7

per quanto ne so:

  • creazione di proxy vero e pigro carico vero =>
    • rilevamento delle modifiche
    • caricamento pigro
  • creazione di proxy vero e lazy loading falsa =>
    • rilevamento delle modifiche
  • creazione di proxy falsa e pigro carico vero =>
    • ...

riferimento (tra gli altri): msdn

+0

Grazie per la risposta. In che modo i proxy cambiano il modo in cui funziona il rilevamento delle modifiche? –

+2

senza proxy, senza tracciamento. Quindi 'context.SaveChanges()' non farà mai nulla. – tschmit007

+0

Penso che il rilevamento delle modifiche non abbia nulla a che fare con il proxy, fondamentalmente nella misura in cui entrambi vengono utilizzati insieme per consentire il caricamento lento, l'abilitazione del proxy non ha alcun vantaggio, a meno che non si possa fornire un esempio di codice specifico che spieghi ciò, e io appena provato disabilitato entrambi, 'Trova (1)', cambia il puntello, quindi 'SalvaChanges', salva le modifiche –