SQLCacheDependency с SqlCommand никогда не равен NULL - PullRequest
0 голосов
/ 11 февраля 2010

Мне нужно реализовать зависимость кеша от команды выбора sql, которая выбирает одно значение (дата последнего изменения некоторых строк).

Моя проблема в том, что, хотя я обновляю контент и, когда запускаю запрос вручную, я вижу новую дату, система не считает, что она изменилась, и не обновляет контент.

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

1 Ответ

0 голосов
/ 23 марта 2010

SQL, который вы используете для зависимости, недопустим, вы не можете использовать MAX (). SqlCacheDependency довольно требователен к тому, что вы можете / не можете использовать, см. MSDN: Особые замечания при использовании уведомлений о запросах для получения более подробной информации

"... Оператор не должен использовать ни одну из следующих агрегатных функций: AVG, COUNT (), MAX, MIN, STDEV, STDEVP, VAR или VARP ..." *

...