2014-07-10 16 views
11

Si prega di come posso disattivare proxy dinamici per tutte le entità create in Entity Framework 5.disabilitare delega dinamica in Entity Framework a livello globale

Attualmente, io pongo questa espEntities.Configuration.ProxyCreationEnabled = false; in ogni istanza di un dbcontext c'è un modo in cui posso farlo per i modelli attuali e futuri come un compito una tantum.

Tahnks

risposta

20

Metodo 1

Se si dispone di un modello di EDMX, si crea una classe parziale. Utilizzare questo e nel OnContextCreated è possibile disabilitare ProxyCreationEnabled

public partial class MyModelContainer 
{ 
    public void OnContextCreated() 
    { 
     this.Configuration.ContextOptions.ProxyCreationEnabled = false; 
    } 
} 

Metodo 2

Modificare il file model.tt. Trovare la riga che contiene qualcosa di simile:

partial class <#=code.Escape(container)#> : DbContext 

e aggiungere

this.Configuration.ProxyCreationEnabled = false; 

Metodo 3

Se non si utilizza un file EDMX, farlo nel vostro contesto costruttore: (supponendo che il tuo contesto sia chiamato EspEntities)

public class EspEntities : DbContext 
{ 
    public EspEntities() 
    { 
     Configuration.ProxyCreationEnabled = false; 
    } 
} 
+0

Ciao David, presumo t il costruttore di contesto in questo caso si trova in model.context.cs. Tuttavia, se questo è il caso, crea un problema se il modello EDMX viene aggiornato e le modifiche verranno sovrascritte? – user989865

+0

Creato una modifica per te. – DavidG

+0

Creazione proxy! = Caricamento lento. Il caricamento lento richiede la creazione del proxy, ma disabilitarlo non disattiva la creazione del proxy. La creazione del proxy è anche richiesta (e utilizzata) per es. cambiare tracciamento. La tua opzione originale è buona, purché tu faccia la modifica nel modello (invece dell'output del modello), o la aggiunga a un nuovo file (la classe dovrebbe essere una classe parziale, quindi può essere estesa in altri file) . – hvd

Problemi correlati