2010-06-27 60 views
2

如果我有一个项目已经存在于我的ASP.NET Cache中...并且我只希望更新该缓存项目的值 ..而不是Absolute Expiry值或Cache Dependencies等..没有别的,但值.. 。我可以使用Cache.Insert吗?Cache.Insert是否覆盖之前的AbsoluteExpiration?

如果没有,是否有反正我可以检索缓存项目的所有这些值..然后重新使用它们当我做Cache.Insert

干杯:)

回答

0

Cache.Insert重载只需键和对象将只使用默认值缓存行为。

MSDN来自:

插入项与高速缓存键引用其位置,使用由CacheItemPriority枚举提供的默认值的高速缓存对象。

您最好创建自己的帮助器类来为您存储值,因为我不相信有一种方法可以获取缓存项的行为属性。

+0

所以这是一个覆盖?我一直在想。 – 2010-06-28 00:26:59

+0

是的,'Cache.Insert'只是覆盖'Cache'键。我不知道有什么办法来获取缓存属性,所以你的包装需要照顾。 – 2010-06-29 07:33:54

1

您可以创建函数来处理加入新鲜值或更新现有如下:

private static Cache cachingControl; 

public void UpdateToCache(object key, object updateValue) 
{ 
    try 
    { 
     if (key != null) 
     { 
      cachingControl.Remove(key); 
      AddToCache(key, updateValue); 
     } 
    } 
    catch (Exception ex) 
    { 
     //**ToDo[Logging]** Code for logging 
    } 
} 

public void AddToCache(object key, object saveValue) 
{ 
    try 
    { 
     if (key != null) 
     { 
      cachingControl.Insert(key, saveValue,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromMinutes(30)); 
     } 
    } 
    catch (Exception ex) 
    { 
     //**ToDo[Logging]** Code for logging 
    } 
} 

在这里,您可以使用AddToCache功能插入新的价值观和UpdateToCache功能更新的新值现有的密钥(这基本上涉及到删除现有的密钥,并用更新的值再次添加它。)

没有直接的方法来更新现有的值。