1

我最近开始使用 EF4.3。

我为每个请求获取了一些数据——页面配置数据就是一个例子。我从数据库中获取这些数据。

直到最近我一直在存储它,Context.items因为它允许我在整个请求中保留这些数据。

我的问题是,现在我正在使用 EF 进行跟踪(我在每个请求的基础上使用它),理论上页面配置应该在第一次获取时被缓存,所以对它的任何后续调用应该更便宜虽然可能无法与context.items.

是这种情况还是我错过了什么?

4

1 回答 1

1

如果您使用 查询数据,ObjectSet/DbSet即使您之前查询过相同的数据,它也会始终访问数据库。您必须使用不同的查询技术从缓存项中获取数据。

如果您使用DbContext/DbSetAPI,则可以使用查询缓存。

var items = dbContext.Products.Local.Where(/**/);

如果是ObjectContext

var items = objectContext.ObjectStateManager
        .GetObjectStateEntries(EntityState.Unchanged | EntityState.Added | EntityState.Modified)
        .Where(e => e.Entity is Product)....;
于 2012-09-12T10:44:06.963 回答