如何创建行特定的sql缓存依赖项?

问题描述:

我想在我的.net C#应用程序上使用数据缓存。到目前为止,我添加了数据缓存并在特定的表上添加了SQL缓存依赖项。但那不够好。这些表格将被更新太频繁,但与许多缓存对象无关。这会使数据缓存几乎无用,因为它会频繁刷新。我想为每个对象的特定行实现sql缓存依赖性。我怎样才能做到这一点?如何创建行特定的sql缓存依赖项?

+0

为aspnet_regsql的文件只提到表,但你尝试使用它对抗的看法?我怀疑它会工作,但它可能是值得一试。 – 2009-06-02 16:43:01

您需要了解SqlDependency的工作原理。你subscribe a result set and get notified when that result set has changed。您可以订阅任何种类的结果集,这意味着任何种类的查询,只要它符合restrictions of the supported statements即可。如果是表格或视图,它确实没有区别。

因此,从技术上讲,您可以通过提交特定于该行的查询来订阅特定的通知,即。用硬编码的WHERE子句。您必须更改代码才能逐行检索和缓存所需的数据,而不是检索整个表并将它们缓存到内存中。哎呀,如果你至少担心这些表格的大小,你就必须这样做。缓存整个表格只能用于很少更改或根本不更改的目录和参考数据。

您也可以选择检索和缓存数据的分区,即。个别范围的密钥(比如'A'和'D','E'和'H'等等,并且订阅将被通知用于该特定数据分区

如果你想要​​我的博客有一些文章涉及它包括common programming pitfalls of SqlDependencydeployment problems with SqlDependency

+0

BTW,当我说“硬编码,其中”我并不是说要对查找键进行硬编码,你可以使用@parameters OK,我的意思是你必须添加一个WHERE子句来将结果集仅限制在你感兴趣的行上。 – 2009-06-02 20:58:36