因为业务需要 有多个表缓存在一个dataset中代码如下 public DataSet ExecuteCacheData()
{
DataTable dt = this.ExecuteDataTable();
if (HttpRuntime.Cache["ds"] == null)
{
//开启更改通知
SqlCacheDependencyAdmin.EnableNotifications(this._ConnectionString);
//连接到 SQL Server 数据库并为 SqlCacheDependency 更改通知准备数据库表
SqlCacheDependencyAdmin.EnableTableForNotifications(_ConnectionString, dt.TableName);
//定制缓存策略
SqlConnectionStringBuilder ConnectionStringBuilder = new SqlConnectionStringBuilder(this._ConnectionString);
SqlCacheDependency CacheDependency = new SqlCacheDependency(ConnectionStringBuilder.InitialCatalog, dt.TableName);
DataSet ds = new DataSet();
ds.Tables.Add(dt.Copy());
HttpRuntime.Cache.Add("ds", ds, CacheDependency, Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0), CacheItemPriority.High, new CacheItemRemovedCallback(this.RemovedCallback));
}
else
{
DataSet ds = (DataSet)HttpRuntime.Cache["ds"];
ds.Tables.Add(dt.Copy());
}
return (DataSet)HttpRuntime.Cache["ds"];
}修改数据库中的us_Hols表会触发下面的事件:就是从缓存中的Dataset中移除us_Hols表 public void RemovedCallback(String k, Object v, CacheItemRemovedReason r)
{
if (r == CacheItemRemovedReason.DependencyChanged)
{
DataSet ds = (v as DataSet);
ds.Tables.Remove("us_Hols");
HttpRuntime.Cache[k] = ds;
}
}问题是怎么得到us_Hols表的表名称啊
要实现,更改数据库中的aa表从本地缓存的Dataset中移除aa,更改数据库中的bb表从本地缓存的Dataset中移除bb...
{
DataTable dt = this.ExecuteDataTable();
if (HttpRuntime.Cache["ds"] == null)
{
//开启更改通知
SqlCacheDependencyAdmin.EnableNotifications(this._ConnectionString);
//连接到 SQL Server 数据库并为 SqlCacheDependency 更改通知准备数据库表
SqlCacheDependencyAdmin.EnableTableForNotifications(_ConnectionString, dt.TableName);
//定制缓存策略
SqlConnectionStringBuilder ConnectionStringBuilder = new SqlConnectionStringBuilder(this._ConnectionString);
SqlCacheDependency CacheDependency = new SqlCacheDependency(ConnectionStringBuilder.InitialCatalog, dt.TableName);
DataSet ds = new DataSet();
ds.Tables.Add(dt.Copy());
HttpRuntime.Cache.Add("ds", ds, CacheDependency, Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0), CacheItemPriority.High, new CacheItemRemovedCallback(this.RemovedCallback));
}
else
{
DataSet ds = (DataSet)HttpRuntime.Cache["ds"];
ds.Tables.Add(dt.Copy());
}
return (DataSet)HttpRuntime.Cache["ds"];
}修改数据库中的us_Hols表会触发下面的事件:就是从缓存中的Dataset中移除us_Hols表 public void RemovedCallback(String k, Object v, CacheItemRemovedReason r)
{
if (r == CacheItemRemovedReason.DependencyChanged)
{
DataSet ds = (v as DataSet);
ds.Tables.Remove("us_Hols");
HttpRuntime.Cache[k] = ds;
}
}问题是怎么得到us_Hols表的表名称啊
要实现,更改数据库中的aa表从本地缓存的Dataset中移除aa,更改数据库中的bb表从本地缓存的Dataset中移除bb...
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货