我想要一个特定于列的SqlCacheDependency。
特定行SqlCacheDependency
有效,但我不知道如何制作列特定SqlCacheDependency
示例:
查询:
SELECT
[Extent1].[Price] AS [Price]
FROM [dbo].[Products] AS [Extent1]
where [Extent1].[ID] = 31167
如果ID = 31167的行发生更改,会导致通知。
但问题是,如果该行的任何列发生更改,则缓存变为无效但我希望只有 ID 的价格时缓存才会失效31167变了
我用谷歌搜索了很久但没有得到任何帮助。
由于
感谢任何帮助。
答案 0 :(得分:2)
SqlDependency
(由SqlCacheDependency
使用)不提供列级控制。更改通知的语义是,如果查询返回或使用的行“可能已更改”,则会发送它们。
如果这对您来说是一个重要的功能,您需要自己实现它,可能需要使用触发器和Service Broker来排队和传递更改通知,或者通过使用旧式的基于表的通知进行轮询。 NET。
另一种可能性是将您感兴趣的列关闭到一个单独的表(显式副本或使用触发器维护的表)或新表,然后您将其连接到具有视图或SP的原始表。然后每行只包含您感兴趣的列(加上PK)。