我正在评估 EF6 .NET 框架 4.7.2(不是核心)的 EntityFramework Plus。
在初步调查期间,我发现默认情况下缓存键基于 SQL 查询,而不是结果集中的实体类型。
我的问题是,缓存中的实体是否以某种方式共享?
例如,如果我的第一个 EF 查询是:
var employees = myContext.LookupData.Where(x=>x.Id < 100).FromCache()
我的第二个 EF 查询是在第一个 myContext 是 Dispose()d 10 分钟后执行的,它是:
var employees = myContext.LookupData.Where(x=>x.Id < 50).FromCache()
我们可以看到第二个查询的结果集将包含第一个查询的记录。
Entity Framework Plus 是否会检查实体 EF 即将在内存中具体化是否已经存在于第一个查询的缓存中,或者是否存在于某些共享实体缓存中?
如果没有,使用 EF Plus 缓存永不更改或不经常更改的实体以在查询之间共享的最佳实践是什么?
我目前有一个解决方案,即使用标签为用作查找数据的每种实体类型创建派生自 Type.FullName 的命名缓存,但有更好的方法吗?
提前致谢。