0

我的网站在单个服务器上运行。我正在缓存一个数据表。每个会话都有一个对它自己的 DataView 的引用,该 DataView 引用该 DataTable。我担心的是,当我需要对底层数据表进行更改时,它们会传播到对它的每个会话引用。

或者有没有更好的方法来处理这种情况。

4

1 回答 1

0

原则上,是的。如果您继续使用相同的 DataTable,更改将传播到视图。但是,根据您的实现方式,可能会出现问题:

  • 第一次生成缓存的 DataTable 时,您有一个潜在的竞争条件:对服务器的多个请求可能会检测到缓存的 DataTable 不存在,并尝试生成它 - 在这种情况下,您可能有一个重复的 DataTable。

  • 如果重新生成缓存的 DataTable(例如,如果由于超时到期而将其从 ASP.NET 缓存中删除),则 Session 中的现有 DataView 将继续引用旧的 DataTable。

于 2008-11-20T08:55:20.427 回答