请考虑以下代码:
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
由相同的上下文对象添加和跟踪。为什么我在新查询结果中看不到新产品?
在向上下文添加新对象后,是否有办法在不保存更改的情况下到达新对象?
答案 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>()