我有一个Asp.Net Core + EF Core REST服务。我为我想调用存储过程的数据库创建了一个DbContext类。这个方法看起来很简单:
public IQueryable<xxx> Getxxxs()
{
return Set<xxx>().FromSql("pr_Getxxx");
}
这一切都有效,但由于存储过程返回的数据很少改变,所以每次都调用SP没有任何意义。我想让数据过期,比如每24小时。
在Core中有没有首选的模式可以实现这个功能?我看到它们有 .AddCaching 扩展方法,但那似乎会注入到控制器中?所以是控制器的工作来缓存数据?我假设它是线程安全的,所以我不需要进行任何锁定或类似的操作?似乎存在竞态条件,如果一个线程正在检查项目是否已加载到缓存中,则另一个可能正在插入它等等?