这段代码运行得很好,只要数据在数据库中发生变化,它就会使数据失效:
AggregateCacheDependency aggDep = new AggregateCacheDependency();
System.Data.SqlClient.SqlCommand ocom = new System.Data.SqlClient.SqlCommand();
SqlCacheDependency SqlDep = new SqlCacheDependency("DBNAMEINCONFIG", "Products");
aggDep.Add(SqlDep);我不能在整个"Products“表上有一个直接的无效,我需要能够使表上的选择无效。我遇到的问题是,当数据发生变化时,以下代码不会使缓存失效:
AggregateCacheDependency aggDep = new AggregateCacheDependency();
System.Data.SqlClient.SqlCommand ocom = new System.Data.SqlClient.SqlCommand();
ocom.CommandText = "SELECT ID,ClinicID,Price,Enabled FROM dbo.Products WHERE ClinicID = 1";
ocom.Connection = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["DBSTRING"].ToString());
SqlCacheDependency SqlDep = new SqlCacheDependency(ocom);
aggDep.Add(SqlDep);我试图包括所有必要的信息来分析这一点,但请让我知道,如果我应该包括更多!
发布于 2012-01-10 01:40:25
问题是,根据here概述的规则,您不能使用SELECT *进行查询。
以下更改应该可以解决您的问题:
ocom.CommandText = "SELECT ClinicID FROM Products WHERE ClinicID = 1";发布于 2012-01-10 04:13:29
正如competent_tech指出的,用于构建SqlCacheDependency的查询有相当多的规则。根据这篇MSDN文章,最重要的是:
除了这些规则之外,执行用于构建SqlCacheDependency的SqlCommand以启用查询通知也很重要:
using (SqlDataReader reader = ocom.ExecuteReader())
{
while (reader.Read())
{
}
}
SqlCacheDependency SqlDep = new SqlCacheDependency(ocom);
aggDep.Add(SqlDep);霍普,这有帮助。
https://stackoverflow.com/questions/8790408
复制相似问题