有没有办法从缓存中检索实体而不是从EF中的数据库?像ASP.NET Cache机制一样

时间:2012-03-12 06:01:44

标签: entity-framework caching

在ASP.NET中,我们总是将对象或集合存储到缓存中,当我们想要使用它们时,我们可以判断对象或集合是否已经存在于缓存中,如果存在,我们将检索它从缓存中,如果没有,则从数据库中检索它。在调用“context.ObjectSet.AddObject(object)”或调用方法将对象附加到上下文之后,EF是否具有类似的机制,将其保存到缓存中,当我们想要检索对象时,判断对象是否有先存在于缓存中。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您必须查询ObjectStateManager以查找它是否已包含您的实体:

var entity = context.ObjectStateManager()
                    .GetObjectStateEntries(~EntityState.Detached)
                    .Where(e => !e.IsRelationship)
                    .Select(e => e.Entity)
                    .OfType<YourEntityType>()
                    .FirstOrDefault(...); // uniquely identify entity you are looking for