我将一个列表插入到 ASP.Net 中的数据缓存中,如下面的示例代码所示。我使用 C# 作为编程语言。
我无法找到以下问题的解决方案:
- 启动一个可能持续 0.1 秒到 20 秒的长数据库操作。
- 在此操作结束时,我需要确定名称为“dSummary”的缓存是否在长时间操作开始后(即操作正在进行时)被重新插入或从数据库刷新。
我用来插入缓存项的代码如下:
List<Doc> ds = GetDocSummary();
System.Web.HttpContext.Current.Cache.Insert("dSummary", ds, null,
DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration);
更新 1:
在收到这么多回复后,我认为一种可能的万无一失的方法是将 guid 字符串与 List 对象一起存储在缓存中。然后我可以简单地比较长操作前后存储在Cache中的对象的guid字符串属性。如果它们相同,则尚未重新插入 Cache["dSummary"],否则已重新插入。所以我需要使用“Doc”类的以下扩展类。
public class DocX : Doc
{
public UniQueIdentifier { get;set; }
public DocX ( Doc doc, string unqiueIdentifier)
{
this.Doc = doc;
this.UniqueIdentifier = unqiueIdentifier;
}
}
然后我将使用以下代码插入缓存:
List<Doc> ds = GetDocSummary();
System.Web.HttpContext.Current.Cache.Insert("dSummary",new DocX( ds,
new Guid.Newguid().ToString() ), null,
DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration);