最奇怪的事情是,只要代码只要Open数据库连接,就会引发删除所有Cache。
我现在很不明白,Open连接和Cache有什么直接关系吗。源码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Caching;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;namespace MarcomExhibitionMarket
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadDate();
}
} private void LoadDate()
{
var obj = new Object(); if (Cache["tempTable"] == null)
{ string sAccessConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Request.PhysicalApplicationPath + @"\bin\MacomExhibitionMarket.mdb;" + "Persist Security Info=True";//连接字符串
OleDbConnection conn = new OleDbConnection(sAccessConnection);//OLEDB连接
conn.Open(); OleDbCommand com = new OleDbCommand("select * from appuser", conn); OleDbDataAdapter adapter = new OleDbDataAdapter(com); DataSet ds = new DataSet(); adapter.Fill(ds, "tempTable"); Cache.Insert("tempTable", "123562635");
} obj = Cache["tempTable"]; }
}
}
我现在很不明白,Open连接和Cache有什么直接关系吗。源码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Caching;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;namespace MarcomExhibitionMarket
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadDate();
}
} private void LoadDate()
{
var obj = new Object(); if (Cache["tempTable"] == null)
{ string sAccessConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Request.PhysicalApplicationPath + @"\bin\MacomExhibitionMarket.mdb;" + "Persist Security Info=True";//连接字符串
OleDbConnection conn = new OleDbConnection(sAccessConnection);//OLEDB连接
conn.Open(); OleDbCommand com = new OleDbCommand("select * from appuser", conn); OleDbDataAdapter adapter = new OleDbDataAdapter(com); DataSet ds = new DataSet(); adapter.Fill(ds, "tempTable"); Cache.Insert("tempTable", "123562635");
} obj = Cache["tempTable"]; }
}
}
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
public static void SetCache(string CacheKey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject);
}
string CacheKey = "cachetest";
object objModel = GetCache(CacheKey);//从缓存中获取
if (objModel == null)//缓存里没有
{
//重新获取缓存
}
数据发生变化了,缓存里还是过期的数据
自己设置过期时间
{
var obj = new Object(); if (Cache["tempTable"] == null)
{ string sAccessConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Request.PhysicalApplicationPath + @"\bin\database.mdb;" + "Persist Security Info=True";//连接字符串
OleDbConnection conn = new OleDbConnection(sAccessConnection);//OLEDB连接
conn.Open(); OleDbCommand com = new OleDbCommand("select * from Account", conn); OleDbDataAdapter adapter = new OleDbDataAdapter(com); DataSet ds = new DataSet(); adapter.Fill(ds, "tempTable"); onRemove = new CacheItemRemovedCallback(this.RemovedCallback); Cache.Insert("tempTable", "123562635", null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(15), CacheItemPriority.High, onRemove);
} obj = Cache["tempTable"];
//完成A
} private void RemovedCallback(string key, object value, CacheItemRemovedReason reason)
{
//此处设置断点
}每当页面执行到"完成A"只有,就就会调用RemovedCallback,通知数据已经被删除。这是查看Cache中所有数据全部没有了。