我需要在sql select命令上实现缓存依赖性,该命令选择一个值(某些行的最新修改日期)。
我的问题是虽然我更新了内容,但是当我手动运行查询时,我看到了新的日期,系统认为它没有改变,也没有刷新内容。 < / p>
object Taxonomy = GetTaxonomy();
string connectionString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString)) {
AggregateCacheDependency aggregate = new AggregateCacheDependency();
connection.Open();
using (SqlCommand command1 = new SqlCommand("select max(taxonomy_date_modified) as LastModified from dbo.taxonomy_tbl where .... ") {
command1.Parameters.Add(new SqlParameter("@TaxonomyId", SqlDbType.Int));
command1.Parameters[0].Value = siteTaxId;
command1.Parameters.Add(new SqlParameter("@TaxonomyLanguage", SqlDbType.Int));
command1.Parameters[1].Value = LanguageHelper.LanguageCode;
SqlCacheDependency dependency = new SqlCacheDependency(command1);
object modified_date = command1.ExecuteScalar();
aggregate.Add(dependency);
}
cacheTaxonomy.Add(LanguageHelper.LanguageCode, _Taxonomy);
HttpContext.Current.Cache.Insert("Taxonomy", cacheTaxonomy, aggregate, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(24, 0, 0));
connection.Close();
答案 0 :(得分:0)
您用于依赖项的SQL无效,您不能使用MAX()。 SqlCacheDependency对于您可以/不可以使用的内容非常挑剔,有关详细信息,请参阅MSDN: Special Considerations When Using Query Notifications
“...语句不得使用以下任何聚合函数:AVG,COUNT(),MAX,MIN,STDEV,STDEVP,VAR或VARP ......”* < / p>