此代码工作正常,无论何时在数据库中更改数据都会使数据无效:
AggregateCacheDependency aggDep = new AggregateCacheDependency();
System.Data.SqlClient.SqlCommand ocom = new System.Data.SqlClient.SqlCommand();
SqlCacheDependency SqlDep = new SqlCacheDependency("DBNAMEINCONFIG", "Products");
aggDep.Add(SqlDep);
我不能在整个“产品”表上直接无效,但我需要能够使表上的选择无效。我遇到的问题是以下代码在数据更改时不会使缓存失效:
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);
我试图包含分析此内容所需的所有信息,但如果我要添加更多内容,请告诉我们。
答案 0 :(得分:0)
根据概述here的规则,问题是您无法使用SELECT *
进行查询。
以下更改应解决您的问题:
ocom.CommandText = "SELECT ClinicID FROM Products WHERE ClinicID = 1";
答案 1 :(得分:0)
正如 competent_tech 所指出,用于构建SqlCacheDependency
的查询有很多规则。
根据这篇MSDN文章,最重要的是:
除了这些规则之外,执行用于构建SqlCommand
的{{1}}以启用查询通知非常重要:
SqlCacheDependency
希望,这有帮助。