使用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类本身?
答案 0 :(得分:1)
来自昂贵的数据库调用的缓存结果没有错。只需确保这些对象被急切地初始化,以便稍后当您尝试从缓存中读取它们时,他们不需要打开DbContext。如果您尚未完全初始化已存储到缓存中的对象,则EF的延迟加载可能会让您感到厌烦。
还要确保在更新数据时有一个良好的缓存驱逐策略。对于内存缓存,如果您在Web场中运行应用程序,事情可能变得非常非常棘手。