小编Res*_*aos的帖子

实体框架中的缓存如何工作?

我看到大量关于人们努力让 EF 不发送缓存数据的帖子。我坐在这里想知道他们如何让它发送缓存数据......

以下是详细信息:使用 Entity Framework Core 6.0.6 的 .NET 6.0 上的 ASP.NET Core 最新版本。通过 Swagger 站点页面测试控制器方法。DbContext 具有作用域并注入依赖项。未使用 AsNoTracking。

该方法非常简单_DbContext.Set.ToListAsync()。

  1. 我称该方法为。
  2. 直接更新数据库中先前从该方法返回的记录之一的值(通过 Sql Management Studio,而不是同一服务)。
  3. 再次调用该方法。

我希望第二次调用具有“陈旧”数据,即与第一次调用相同的数据。但是,它有我从数据库中更新的数据!?第二次调用要快得多,我认为这是因为 EF 缓存了我的查询和元数据,但它似乎没有缓存查询的实际结果。

根据我的测试,它看起来只会缓存同一请求中的结果。一旦请求完成,DbContext 就会被释放,然后结果缓存就会消失。正确的?因此,如果我想在不同的 Web 请求之间保留结果缓存,那么我必须通过 NCache、其他一些包或自己编写代码来实现自己的缓存?

caching ncache entity-framework-core asp.net-core ef-core-6.0

1
推荐指数
1
解决办法
7820
查看次数