2

我想要一个特定于列的 SqlCacheDependency。

行特定SqlCacheDependency是有效的,但我不知道如何使列特定SqlCacheDependency

例子:

查询:

SELECT 
[Extent1].[Price] AS [Price] 
FROM [dbo].[Products] AS [Extent1]
where [Extent1].[ID] = 31167

如果 ID = 31167 的行发生更改,则会导致通知。

但问题是,如果该行的任何列发生更改,缓存将变为无效,但我希望缓存仅在ID 31167的价格发生更改时才变为无效

我用谷歌搜索了很长时间,但没有得到任何帮助。

谢谢

任何帮助表示赞赏。

4

1 回答 1

2

SqlDependency(由 使用SqlCacheDependency)不提供列级控制。更改通知的语义是,如果查询返回或使用的行“可能已更改”,则发送它们。

如果这对您来说是一个重要的特性,您需要自己实现它,可能使用触发器和服务代理来排队和传递更改通知,或者通过轮询与 .NET 中的旧式基于表的通知一样。

另一种可能性可能是将您感兴趣的列拉到一个单独的表(显式副本或使用触发器维护的一个)或一个新表中,然后您使用视图或 SP 连接到原始表。然后,每一行将只包含您感兴趣的列(加上 PK)。

于 2011-12-03T03:28:56.243 回答