Non c'è Detach(object entity)sul DbContext.
Ho la possibilità di staccare prima gli oggetti sul codice EF?
Non c'è Detach(object entity)sul DbContext.
Ho la possibilità di staccare prima gli oggetti sul codice EF?
Risposte:
Se vuoi staccare un oggetto esistente, segui i consigli di @ Slauma. Se si desidera caricare oggetti senza tenere traccia delle modifiche, utilizzare:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
Come menzionato nel commento, questo non distaccerà completamente le entità. Sono ancora collegati e il caricamento lento funziona ma le entità non vengono monitorate. Questo dovrebbe essere usato per esempio se vuoi caricare un'entità solo per leggere i dati e non prevedi di modificarli.
Questa è un'opzione:
dbContext.Entry(entity).State = EntityState.Detached;
entitydevo essere un oggetto materializzato di un tipo che fa parte delle classi del tuo modello (Persona, Cliente, Ordine, ecc.). Non è possibile passare direttamente in un IQueryable <T> in dbContext.Entry(...). È questa la domanda che intendevi?
Detached. Se si desidera caricare entità dal DB senza collegarle affatto al contesto (nessun rilevamento delle modifiche), utilizzare AsNoTracking.
Detached.
using(ctx){ return ctx....ToList(); }. In questi casi l'usoAsNoTracking()avrebbe molto senso perché risparmierei di riempire inutilmente il contesto dell'oggetto. Immagino che probabilmente avrebbe un vantaggio in termini di prestazioni e consumo di memoria soprattutto per elenchi di grandi dimensioni, giusto?