如何在数据库中更新数据时刷新ASP.NET缓存?

Jos*_*osh 4 asp.net caching

我目前正在利用下面的代码在每天午夜刷新缓存.它运行良好,但需求会发生变化,以便在数据集中的项更改时需要更新缓存.我知道有一个CacheDependency类用于检查文件是否已更改以刷新缓存 - 但我不知道这是如何适用于我想要做的.当数据集发生变化时,有人可以帮助我指导正确的方向更新缓存吗?谢谢.

        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["localDb"].ConnectionString);
            DataSet ds = new DataSet();
            if (Cache["ds"] == null)
            {
                conn.Open();
                SqlCommand sqlComm = new SqlCommand("SELECT EmployeeID, NationalIDNumber, ContactID, LoginID, ManagerID, Title, BirthDate, MaritalStatus, Gender FROM HumanResources.Employee", conn);
                SqlDataAdapter adapter = new SqlDataAdapter(sqlComm);
                adapter.Fill(ds);
                Cache.Insert("ds", ds, null, DateTime.Today.AddDays(1), TimeSpan.Zero);
                conn.Close();
            }
            GridViewEmployees.DataSource = (DataSet)Cache["ds"];
            GridViewEmployees.DataBind();
        }
        catch (Exception)
        {
            throw;
        }
Run Code Online (Sandbox Code Playgroud)

Rob*_*nik 5

DotNet 2.0+方法

我想你已经听过并读过SqlCacheDependency课,不是吗?好吧,如果你没有我建议你这样做.它会带给你一个微笑.;)

MSDN文章.

DotNet 1.x方法

在过去(pre .net 2.0和pre SQL 2005)中,还有一种通常CacheDependency类的技巧,以便您在需要它的表上创建插入/更新的触发器,几乎(重新)保存了一个空文件(因此它尽可能快)在某个文件夹中,您将缓存依赖于该特定文件,从而在数据更改时使缓存失效.我听说它工作正常.

MSDN杂志2003年关于它的文章.