为什么Entity Framework查询不返回未保存的实体

时间:2011-06-21 13:30:15

标签: entity-framework entity-framework-4

请考虑以下代码:

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);

请注意,Products_Again在不保存上下文的情况下被查询,即myContext.SaveChanges()未被调用。

Products_Again包含与Products_First相同数量的产品。为什么是这样?新的Product由相同的上下文对象添加和跟踪。为什么我在新查询结果中看不到新产品?

在向上下文添加新对象后,是否有办法在不保存更改的情况下到达新对象?

1 个答案:

答案 0 :(得分:36)

类型ObjectQuery<T>的属性,如myContext.Product总是查询数据库。这就是他们所做的。

在EF 4.1中,您可以使用DbSet<T>.Local查询内存。

在EF&lt; 4.1你会使用:

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