缓存EF Poco对象不好?

时间:2015-12-31 13:04:34

标签: c# entity-framework caching memorycache

使用MemoryCache直接缓存EF Poco对象是一个好习惯吗?有什么缺点?

例如,我创建了一个名为category

的Poco类
public partial class Category  
{
    public int Id { get; set; } 
    public string Name { get; set; }        
    public string Description { get; set; }
}

然后我将类别列表添加到缓存对象中,该对象是MemoryCache的类型,如下所示

protected ObjectCache Cache
{
    get
    {
        return MemoryCache.Default;
    }
}

List<Category> data= getCategories();
Cache.Add(new CacheItem(key, data), policy);

或是建议在中间使用另一个转换器类并缓存此类而不是Poco类本身?

1 个答案:

答案 0 :(得分:1)

来自昂贵的数据库调用的缓存结果没有错。只需确保这些对象被急切地初始化,以便稍后当您尝试从缓存中读取它们时,他们不需要打开DbContext。如果您尚未完全初始化已存储到缓存中的对象,则EF的延迟加载可能会让您感到厌烦。

还要确保在更新数据时有一个良好的缓存驱逐策略。对于内存缓存,如果您在Web场中运行应用程序,事情可能变得非常非常棘手。