gpt4 book ai didi

c# - 更新数据集时更新缓存

转载 作者:行者123 更新时间:2023-11-30 21:07:00 25 4
gpt4 key购买 nike

我有一个数据集存储所有大陆及其各自的国家。我正在缓存数据表:

DataSet dset = new DataSet();
string cacheKey = "CoverageDataTable";
object cacheItem = Cache[cacheKey] as DataTable;
if (cacheItem == null)
{
dset = (DataSet)_obj.GetAllContinent();
cacheItem = dset.Tables[0];
Cache.Insert(cacheKey, cacheItem, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromHours(5), CacheItemPriority.High, null);
}

现在我希望如果数据表有任何变化,应该从数据库中获取新数据。我该怎么做?

最佳答案

根据您的 SQL 数据库版本,您可以使用 SqlCacheDependency。

在你的 web.config 中非常简短

<caching>
<sqlCacheDependency pollTime="10000" enabled="true" >
<databases>
<add connectionStringName="ConnectionString" name="Coverage"/>
</databases>
</sqlCacheDependency>
</caching>

然后在代码中

private void BindData()
{
// if null then fetch from the database
if (Cache["CoverageDataTable"] == null)
{
// Create the cache dependency
SqlCacheDependency dep = new SqlCacheDependency("Coverage", CoverageDataTable");
string connectionString = ConfigurationManager.ConnectionStrings[
"ConnectionString"].ConnectionString;
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter("SELECT ColA, ColB, ColC " +
"FROM CoverageDataTable", myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);

// put in the cache object
Cache.Insert("CoverageDataTable", ds, dep);
}

gvCoverageDataTable.DataSource = Cache["CoverageDataTable"] as DataSet;
gvCoverageDataTable.DataBind();
}

一些背景可以在这里找到:Caching in ASP.NET with the SqlCacheDependency Class

关于c# - 更新数据集时更新缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com