No hay Detach(object entity)en el DbContext.
¿Tengo la capacidad de separar objetos en el código EF primero?
No hay Detach(object entity)en el DbContext.
¿Tengo la capacidad de separar objetos en el código EF primero?
Respuestas:
Si desea separar el objeto existente, siga los consejos de @ Slauma. Si desea cargar objetos sin realizar un seguimiento de los cambios, use:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
Como se mencionó en el comentario, esto no separará completamente las entidades. Todavía están unidos y la carga diferida funciona, pero las entidades no se rastrean. Esto debería usarse, por ejemplo, si desea cargar la entidad solo para leer datos y no planea modificarlos.
Esta es una opción:
dbContext.Entry(entity).State = EntityState.Detached;
entitydebe ser un objeto materializado de un tipo que sea parte de tus clases de modelo (Persona, Cliente, Pedido, etc.). No puede pasar directamente un IQueryable <T> a dbContext.Entry(...). ¿Esa es la pregunta que quisiste decir?
Detached. Si desea cargar entidades de la base de datos sin asociarlas al contexto (sin seguimiento de cambios), use AsNoTracking.
Detached.
using(ctx){ return ctx....ToList(); }. En tales casos, el usoAsNoTracking()tendría mucho sentido porque ahorraría llenar innecesariamente el contexto del objeto. Supongo que probablemente tendría un rendimiento y un beneficio en el consumo de memoria, especialmente para listas grandes, ¿verdad?