query property framework dbquery data collection entity-framework entity-framework-4

property - Por qué las consultas de Entity Framework no devuelven las entidades no guardadas



query data entity framework (1)

Las propiedades del tipo ObjectQuery<T> , como myContext.Product , siempre consultan el DB. Eso es lo que hacen.

En EF 4.1 puede usar DbSet<T>.Local para consultar la memoria.

En EF <4.1 usarías:

ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Select(o => o.Entity).OfType<Product>()

Considera el siguiente código:

var Products_First = (from Entities.Product p in myContext.Product select p); Entities.Product newProduct = new Entities.Product(); newProduct.Name = "New Product"; myContext.Products.AddObject(newProduct); var Products_Again = (from Entities.Product p in myContext.Product select p);

Observe aquí que Products_Again se consulta sin guardar el contexto, es decir, myContext.SaveChanges() no se llama.

Products_Again contiene la misma cantidad de productos que Products_First . ¿Por qué es esto? Un nuevo Product es agregado y rastreado por el mismo objeto de contexto. ¿Por qué no puedo ver el nuevo producto en los nuevos resultados de la consulta?

Después de agregar un nuevo objeto al contexto, ¿hay alguna forma de llegar al nuevo objeto sin guardar los cambios?