0

1つの値(一部の行の最新の変更日)を選択するsqlselectコマンドにキャッシュ依存関係を実装する必要があります。

私の問題は、コンテンツを更新し、クエリを手動で実行すると、新しい日付が表示されても、システムが変更されたとは見なさず、コンテンツを更新しないことです。

    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();
4

1 に答える 1

0

依存関係に使用している SQL が無効です。MAX() は使用できません。SqlCacheDependency は、使用できるものと使用できないものについてかなりうるさいです。詳細については、MSDN: クエリ通知 を使用する場合の特別な考慮事項を参照してください。

「...ステートメントでは、次の集計関数を使用してはなりません: AVG、COUNT( )、MAX、MIN、STDEV、STDEVP、VAR、または VARP...」*

于 2010-03-23T10:26:04.830 に答える