在ASP.Net中存储大型全局对象的最佳方法是什么

时间:2011-06-20 04:08:14

标签: .net caching

我的项目要求我创建一个包含表列表的数据库对象(自定义类),每个表包含一列列。 columns和tables对象具有数据库中不可用的特定属性。例如标签,最大值,最小值等。

所有这些自定义属性都存储在数据库表中,用户可以修改这些表。这些属性将用于各种Web表单。

我的问题:继续连接到数据库以找出每个表单的这些扩展属性是明智的,或者创建一个对象(如上所述)并将所有表,列存储为列表并将该BIG对象存储为应用变量。

我还想把对象放在缓存中,并在用户对扩展属性进行更改时使对象过期。

有人可以告诉我上述3种方法中的最佳方法或任何其他确保最佳性能的方法。

由于

编辑:这必须是适用于任何数据库的通用解决方案。因此,可能存在大量表(50-120),每个表具有10-30列

Edit2 :我还在考虑动态创建类(比如Entity框架)并使用反射加载它们。

1 个答案:

答案 0 :(得分:0)

由于您只是缓存元数据而没有数据,因此存储的数量相对较小。

我有两种选择:

  • 存储在Application对象中,该对象可供所有会话使用,但不会过期(但会在应用程序池重置之前一直存在)
  • 存储在Cache条目中,允许您设置将来的过期或数据库相关性,以便您可以刷新数据。

由于您说用户可以更改数据,因此具有数据库依赖关系的Cache看起来是正确的选择,尽管只能直接使用SqlCacheDependency类支持(因此仅适用于SQL Server) )。

更通用的方法是缓存过期并在到期时导致数据库轮询。