C# .NET Framework 4中数据库中的缓存数据列表

C# .NET Framework 4中数据库中的缓存数据列表,c#,.net,database,caching,C#,.net,Database,Caching,我有一个应用程序,它使用表中的数据,而表中的许多部分几乎总是不变的。 这似乎是一个正确的地方,使它的缓存。所以:我需要创建该数据的缓存列表来处理它,但有一些过期超时,之后我的缓存列表应该从数据库中自我更新(这就是为什么全局静态列表不适合这种情况) PS我确信这没那么难,但我是缓存新手,帮助会节省我的时间,谢谢。至少我可以创建静态列表,在另一个线程中使用计时器超时后更新,但我认为这样的解决方案太难看了。这里有很多关于如何实现这一点的提示: 缓存可以安装一个过期日期,这样它将在设定的时间后重新获取

我有一个应用程序,它使用表中的数据,而表中的许多部分几乎总是不变的。
这似乎是一个正确的地方,使它的缓存。所以:我需要创建该数据的缓存列表来处理它,但有一些过期超时,之后我的缓存列表应该从数据库中自我更新(这就是为什么全局静态列表不适合这种情况)


PS我确信这没那么难,但我是缓存新手,帮助会节省我的时间,谢谢。至少我可以创建静态列表,在另一个线程中使用计时器超时后更新,但我认为这样的解决方案太难看了。

这里有很多关于如何实现这一点的提示:


缓存可以安装一个过期日期,这样它将在设定的时间后重新获取数据,而不需要处理计时器等。

以及如何在一段时间后更新缓存?。有一些ChangeMonitors,但如何在一段时间后启动事件(过期超时),例如,没有计时器..?我的列表,我要使用的缓存将是smth,如下所示:实体上下文=新实体();var cacheList=context.Dictionaries.ToList();(我在这里使用EF来获取数据,所以我需要在过期时间后重新查询DB)您不需要-它会在您读取数据并且缓存超时已过期时更新。要实现,您需要存储最初获取数据的日期。每次你从缓存中读取数据时,你都会检查当前的数据,如果已经过了预定的时间,你会再次获取数据并重新生成缓存副本。永远不要直接缓存ORM中的数据!首先将其转换为POCOs,否则在从缓存恢复副本后,ORM在对象中携带的任何上下文都将不可用,从而导致奇数崩溃。为什么不呢?。对于此缓存,我只需要属性值列表。我不需要用那个缓存或smth缓存数据库。在我的例子中,只需更新
列表