none
使用SqlCacheDependency时为何仿佛没起作用? RRS feed

  • 问题

  • 我使用这样的代码进行测试:

            System.Data.DataTable dt = null;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    if (Cache.Get("key") == null)
                    {
                        System.Data.SqlClient.SqlConnection con =
                            new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Test;User ID=Hugo;Password=MYvalentinE");
                        System.Data.SqlClient.SqlCommand com =
                            new System.Data.SqlClient.SqlCommand("select * from T1", con);
                        System.Data.DataSet ds = new System.Data.DataSet();
                        System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(com);
                        da.Fill(ds);
                        dt = ds.Tables[0];
                        SqlCacheDependency dep = new SqlCacheDependency(com);
                        Cache.Insert("key", dt, dep);
                    }
                }
    
    使用SqlCacheDependency向缓存插入一个记录。如果我向T1表插入一条记录:
                System.Data.SqlClient.SqlConnection con =
                    new System.Data.SqlClient.SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Test;User ID=Hugo;Password=MYvalentinE");
                System.Data.SqlClient.SqlCommand com =
                    new System.Data.SqlClient.SqlCommand("insert into T1 values(1,2,3)",con);
                con.Open();
                com.ExecuteNonQuery();
                con.Close();
    该缓存将失效,在获取时:
                System.Data.DataTable mydt = (System.Data.DataTable)Cache.Get("key");
                if(Cache.Get("key") != null)
                {
                    this.GridView1.DataSource = mydt;
                    this.GridView1.DataBind();
                }
    这个值应该为null。
    但是在实际测试中,这个Cache["key"]并不为null。也就是说缓存并没有失效。这是为什么呢?我需要怎么才能实现这个功能的。我的数据库是SQL Server2005
    郭鹏
    2009年11月8日 5:55

答案

全部回复