我看到大量关于人们努力让 EF 不发送缓存数据的帖子。我坐在这里想知道他们如何让它发送缓存数据......
以下是详细信息:使用 Entity Framework Core 6.0.6 的 .NET 6.0 上的 ASP.NET Core 最新版本。通过 Swagger 站点页面测试控制器方法。DbContext 具有作用域并注入依赖项。未使用 AsNoTracking。
该方法非常简单_DbContext.Set.ToListAsync()。
我希望第二次调用具有“陈旧”数据,即与第一次调用相同的数据。但是,它有我从数据库中更新的数据!?第二次调用要快得多,我认为这是因为 EF 缓存了我的查询和元数据,但它似乎没有缓存查询的实际结果。
根据我的测试,它看起来只会缓存同一请求中的结果。一旦请求完成,DbContext 就会被释放,然后结果缓存就会消失。正确的?因此,如果我想在不同的 Web 请求之间保留结果缓存,那么我必须通过 NCache、其他一些包或自己编写代码来实现自己的缓存?
caching ncache entity-framework-core asp.net-core ef-core-6.0