Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当用户会话持有基于该数据表的数据视图时,处理对缓存数据表的更新_C#_Asp.net_Ado.net_Datatable_Dataview - Fatal编程技术网

C# 当用户会话持有基于该数据表的数据视图时,处理对缓存数据表的更新

C# 当用户会话持有基于该数据表的数据视图时,处理对缓存数据表的更新,c#,asp.net,ado.net,datatable,dataview,C#,Asp.net,Ado.net,Datatable,Dataview,我的网站在一台服务器上运行。我正在缓存一个数据表。每个会话都有一个指向它自己的DataView的引用,该DataView引用该DataTable。我担心的是,当我需要对底层数据表进行更改时,它们是否会传播到对它的每个会话引用 或者有没有更好的方法来处理这种情况。原则上是的。如果继续使用相同的DataTable,更改将传播到视图。但是,根据您的实施方式,可能会出现问题: 在第一次生成缓存数据表时,可能会出现竞争情况:对服务器的多个请求可能会检测到缓存数据表不存在,并尝试生成它—在这种情况下,可能

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


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

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

  • 在第一次生成缓存数据表时,可能会出现竞争情况:对服务器的多个请求可能会检测到缓存数据表不存在,并尝试生成它—在这种情况下,可能会有重复的数据表

  • 如果重新生成缓存的数据表(例如,如果由于超时过期而将其从ASP.NET缓存中删除),则会话中的现有数据视图将继续引用旧数据表