`
feiliboos
  • 浏览: 665393 次
文章分类
社区版块
存档分类
最新评论

SqlCacheDependency

 
阅读更多

SqlCacheDependency

web页面代码片段:

web页面代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->String connectionString = "Data Source=localhost;Initial Catalog=BalloonShop;Integrated Security=True";
DataTable dt
= (DataTable)HttpContext.Current.Cache["Customer_test"];
if (dt == null)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
String sqlStr
= "SELECT dbo.Product.ProductID, Name, col_name FROM" +
" dbo.Product inner join dbo.ProductCategory on " +
" dbo.Product.ProductID = dbo.ProductCategory.ProductID inner join" +
" dbo.tb_category on dbo.ProductCategory.CategoryID = dbo.tb_category.col_id";
conn.Open();
SqlCommand command
= new SqlCommand();
command.Connection
= conn;
command.CommandText
= sqlStr;
// DataTableCache.Dependency = new SqlCacheDependency(command);
SqlCacheDependency dependency = new SqlCacheDependency(command);
         SqlDataAdapter adapter
= new SqlDataAdapter(command);
DataSet ds
= new DataSet();
adapter.Fill(ds,
"Customers");
dt
= ds.Tables[0];
// command.Connection.Close();
DataTableCache.AddCache("Customer_test", dt, command);//缓存通知失效 不起作用
     DataTableCache.AddCache("Customer_test", dt,
dependency );// 成功
// HttpContext.Current.Cache.Insert("Customer_test", dt, dependency);

}
}

gvwCustomers.DataSource
= dt;
gvwCustomers.DataBind();

DataTableCahche的代码片段:

DataTableCache代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->public class DataTableCache
{
private DataTableCache(){ }
private static SqlCacheDependency dependency = null;

public static SqlCacheDependency Dependency {
get { return dependency; }
set { dependency = value; }
}
public static void AddCache(String key, DataTable dt,SqlCommand command) {
dependency
= new SqlCacheDependency(command);
HttpContext.Current.Cache.Insert(key, dt, dependency);
}
public static void AddCache(String key, DataTable dt, SqlCacheDependency dependency) {
HttpContext.Current.Cache.Insert(key, dt, dependency);
}
public static void AddCache(String key, DataTable dt) {
HttpRuntime.Cache.Insert(key,dt, dependency);
}
}
当我使用上面红色的部分插入cache的时候,我改变数据库中的数据时,界面上的数据却不会变化,通知失效机制不能成功运行,
当我使用蓝色的部分插入cache的时候,
我改变数据库中的数据时,界面上的数据能发生变化,通知失效机制能成功运行,我很困惑,这到底是什么原因?
小丁
菜鸟二级
专家分-301
提问于2010-01-19 11:57

<!--问题的答案列表开始-->
所有回答(2)
0 0
这个有问题


private static SqlCacheDependency dependency = null;

public static SqlCacheDependency Dependency {
get { return dependency; }
set { dependency = value; }
}
public static void AddCache(String key, DataTable dt,SqlCommand command) {
dependency
= new SqlCacheDependency(command);
HttpContext.Current.Cache.Insert(key, dt, dependency);
}

应该是你这边全局static有点问题,更改成静态单件构造函

你更改成试试:

 public static void AddCache(String key, DataTable dt,SqlCommand command) {       
SqlCacheDependency
_dependency = new SqlCacheDependency(command);
HttpContext.Current.Cache.Insert(key, dt, _dependency);
}



persialee
老鸟四级
专家分-3217
回答于2010-01-19 15:47
这个我试过,好像也不行,
还有就是问题出在command上,在command执行以后,比如执行以下语句之后:
command.ExecuteReader();

SqlDataAdapter adapter = new SqlDataAdapter(command);
在把command赋给SqlCacheDependency时就会不起作用,
而在command执行之前赋给SqlCacheDependency就可以,
但我不太清楚这里边的运行机制
评论于2010-01-19 16:59
1 0

看看这里
http://www.dotnetcurry.com/ShowArticle.aspx?ID=263&AspxAutoDetectCookieSupport=1

的确需要在 cmd.ExecuteNonQuery();之前执行

SqlCacheDependency dependency = new SqlCacheDependency(cmd);

分享到:
评论

相关推荐

    SqlCacheDependency 基于多表的缓存应用

    SqlCacheDependency 基于多表的缓存应用

    C#缓存之SqlCacheDependency用法实例总结

    主要介绍了C#缓存之SqlCacheDependency用法,在C#程序设计中有一定的实用价值,需要的朋友可以参考下

    【ASP.NET编程知识】asp.net页面SqlCacheDependency缓存实例.docx

    【ASP.NET编程知识】asp.net页面SqlCacheDependency缓存实例.docx

    asp.net中SqlCacheDependency缓存技术概述

    本文实例讲述了asp.net中SqlCacheDependency缓存技术,对于大型web程序设计来说具有很高的实用价值。具体如下: 对于访问量大,但更新较少的网站中使用缓存技术,可以大大提高运行效率;加上.NET 2.0提供的缓存依赖...

    SqlCacheDependency示例

    SqlCacheDependency 示例 示例包括两个方面: 1.使用aspnet_regsql.exe的SqlCacheDependency的示例 2.使用SqlCacheDependencyAdmin的示例

    简化了SqlCacheDependency的Web缓存

    将SqlCacheDependency与Web缓存一起使用

    asp.net页面SqlCacheDependency缓存实例

    asp.net页面的SqlCacheDependency Sql缓存: Cahce/SqlCachePage.aspx页面代码如下: &lt;&#37;@ Page Language=C# MasterPageFile=~/Site.master AutoEventWireup=true CodeFile=SqlCachePage.aspx.cs Inherits=...

    为SQL缓存通知启用数据库

    最近在学习.NET缓存的过程中,研读了PetShop4.0的代码,对其中的SqlCacheDependency特性做了一下代码测试。对测试数据表对应的缓存实施SQL Cache Invalidation。当对应的数据表发生变动时,可以将相关项从缓存中移除...

    System.Web.UI.WebControls

    SqlCacheDependency AccessDataSourceView AccessDataSourceView ExecuteSelect AdCreatedEventArgs AdCreatedEventArgs AdProperties AlternateText ImageUrl NavigateUrl AdCreatedEventHandler AdRotator ...

    在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency

    当缓存数据库数据时,最理想的状态是数据一直驻留在内存,直到数据库发生了改动。在ASP.NET 2.0,可以通过编程或声明代码的方式使用SQL cache dependencies,配合SQL Server 2005来实现此功能。

    PetShop4.0源码 详细的解析资料 两种同步和基于MSMQ的异步处理 缓存处理策略 Master Pages Wizard Control

    微软提供PetShop4.0,最佳的ASP.NET学习资料。附上了详细的解析。 功能介绍: 1.System.Transactions替代了服务组件。... 2.使用泛型的强类型代替了IList。...6.使用SqlCacheDependency缓存处理策略

    petshop(宠物商店) V4.0源码文件

    可以说,学习PetShop 4.0是深入掌握ASP.NET 2.0技术的捷径。 大名鼎鼎的PetShop(宠物商店)V4.0 1.System.Transactions替代了服务组件。... 2.... 3.... 4.... 5.使用了ASP.NET2.0中的...使用SqlCacheDependency缓存处理策略

    亮剑.net图改asp.net网站开发实战源码.rar

    数据控制项运用、样板设计的使用时机探讨,会员数据表与现有数据表的整合,通过完整范例探讨多层架构系统与会员管理机制的整合,效能、缓存类与网页缓存设计,SqlCacheDependency与SQL Server数据缓存技术,事件记录...

    实例PetShop4.0(ASP.NET)

    新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.NET 2.0附带的...

    Microsoft .NET Pet Shop 4.0

    新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.NET 2.0附带的...

    微软推出的asp.net2.0经典范例

    新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.NET 2.0附带的...

    Pet Shop 4.0 架构与技术分析PPT

    新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.NET 2.0附带的...

Global site tag (gtag.js) - Google Analytics