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?