缓存EF Poco对象不好

本文关键字:对象 Poco EF 缓存 | 更新日期: 2023-09-27 18:28:38

直接使用MemoryCache缓存EF Poco对象是一种好的做法吗?如果有的话,缺点是什么?

例如,我创建了一个名为类别的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类本身?

缓存EF Poco对象不好

缓存昂贵的数据库调用的结果没有错。只要确保这些对象被急切地初始化,这样以后当你试图从缓存中读取它们时,它们就不需要打开DbContext了。如果你还没有完全初始化存储在缓存中的对象,EF的延迟加载可能会让你头疼。

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