我将一个列表插入到 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);
最佳答案
我只会在您添加或更新 dSummary 时添加另一个 Cache 属性,其中包含您修改它的时间戳。
您可以在长时间运行的操作开始时记录原始值,并在结束时将其与缓存中的当前值进行比较;如果值不同,则数据已更新。
关于c# - 自长时间操作开始以来,很难确定 ASP.Net 中的数据缓存是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114077/