我试图向图书馆的作者提出这个问题,但他假设了一些不适合我的情况的事情,之后他关闭了线程,没有让我解释我的问题实际上是什么。粗鲁的恕我直言...
我的服务有时(很少)更改数据。我还有其他服务以只读方式读取相同的数据,并在内存中为整个 DbContext 进行自己的缓存。它们尽可能长时间地将数据保留在缓存中(滑动)。但在极少数情况下,当数据发生更改时,我需要在这些只读服务中使该数据无效。手动,由于写入和读取上下文不仅不相同,而且位于不同的主机上,因此自动失效显然不会起作用。表明数据从一项服务更改为只读服务的事实已设置,一些延迟也不是问题。但目前,我只能一次性使整个缓存失效。
拦截器有一些手动失效的机制。但描述很模糊。甚至不清楚我想要的是否可能实现。
我只需要使与特定表相关的条目无效。
根据一些挖掘和调试的结果,似乎
InvalidateCacheDependencies
方法完全符合我的需要,尽管有一些警告:内部存储通过添加某些前缀来跟踪缓存查询中使用的表原因,但没有添加架构。这意味着在更多模式中具有相同的表名可能会出现问题。如果发现传递给该方法的任何带前缀的表名称与缓存的查询相关,则该条目无效。这意味着不可能出现细粒度的失效。