Entity framework 澄清EF Plus究竟缓存了哪些内容

Entity framework 澄清EF Plus究竟缓存了哪些内容,entity-framework,entity-framework-plus,entity-framework-extensions,Entity Framework,Entity Framework Plus,Entity Framework Extensions,如果我有一个服务请求表,并在其上运行以下代码: var serviceRequest = await _ctx.ServiceRequests.DeferredAny(t => t.Id == h.Id).FromCacheAsync("ServiceRequestByID"); 这是否与“保存此查询”相同: 从ID=12345的ServiceRequests中选择* 或者,这与说: 选择*fromservicesrequests(然后从新缓存的数据中查找id 12345) 换句话说,关

如果我有一个服务请求表,并在其上运行以下代码:

var serviceRequest = await _ctx.ServiceRequests.DeferredAny(t => t.Id == h.Id).FromCacheAsync("ServiceRequestByID");
这是否与“保存此查询”相同:

从ID=12345的ServiceRequests中选择*

或者,这与说:

选择*fromservicesrequests(然后从新缓存的数据中查找id 12345)

换句话说,关于使用上面的代码行,缓存的究竟是什么?如果我稍后带着一个新ID回来,它会查询缓存还是转到数据库,因为它第一次只保存了第一个ID的记录?

结果会被缓存

在您的例子中,布尔值结果被缓存,而不是实体


如果您使用不同的ID进行查询,它将查询数据库并缓存结果以及其他结果

其他与问题相关的。。。如果我的应用程序中有一个可以查询多个相关表的小模块,那么让它们都有一个“{moduleName}”标记,然后在更新记录时,用该标记终止所有查询,这会更聪明吗?或者有更好的方法吗?您可以指定多个标记,因此答案很大程度上取决于您如何使用它。例如,如果您有一个同时执行国家/地区和州的导入,那么为两个缓存都添加一个标记可以使它们更容易过期。答案将根据您希望如何使用缓存而有所不同,我不希望在这个问题上有任何一般性的建议。