Я пытаюсь сделать недействительным кеш на основе изменения в строках базы данных. Я достиг успеха, делая то же самое с помощью LINQ с одной и той же базы данных и таблицы, но Iam не в состоянии сделать это в основном путем:Невозможно аннулировать кеш, зависящий от SQL-запроса
Вот код, который я написал, пожалуйста, помогите:
public DataSet GetData(string sqlCmd)
{
string connectionStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
string cacheKey = "test123";
DataSet ds = (DataSet)HttpRuntime.Cache.Get(cacheKey);
if (ds != null)
{
return ds;
}
SqlCacheDependency sqldep = null;
SqlConnection conn = new SqlConnection(connectionStr);
SqlCommand cmd = new SqlCommand(sqlCmd, conn);
cmd.Notification = null;
cmd.NotificationAutoEnlist = true;
SqlDataAdapter sqlAd = new SqlDataAdapter(cmd);
ds = new DataSet();
sqlAd.Fill(ds);
System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(connectionStr);
string NotificationTable = "TblMetaData";
if (!System.Web.Caching.SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(connectionStr).Contains(NotificationTable))
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications(connectionStr, NotificationTable);
sqldep = new SqlCacheDependency(cmd);
HttpRuntime.Cache.Insert(cacheKey, ds, sqldep);
return ds;
}
Я использую Sql Server 2005 и используя полностью квалифицированные запросы, которые могут работать с уведомлением команды.
Мой другой код в Linq отлично работает с той же базой данных и таблицей, поэтому нет никакого смысла в Service Broker или других разрешениях, которые не заданы. PLease поможет мне избавиться от этой проблемы.