Joh*_*n D 2 asp.net webforms sql-server-2012
在我们使用 SQL Server 的 ASP.NET 4.6 Webforms 应用程序中,我们希望页面使用#temptable,但我们无法让它工作。Page1在 SQL Server 中创建#temptable,然后启动Page2将其放入要#temptable在网格内编辑的 GridView 中。
当加载并且对浏览器可见时, 的范围#temptable似乎不会超出Page1服务器范围。Page2
我们正在考虑使用数据库本身的表,而不是#temptable. 此外,其他用户可能能够编辑相同的表,但使用不同的“数据”。我们认为这#temptable将属于特定用户(来自浏览器)。
任何指导将不胜感激。谢谢...约翰。
答案:根据@Faruq的解释,我们将为每个用户使用一个普通的数据库表。
恐怕 #tempTable 和 ##tempTable 都不适合您。让我解释一下。
本地临时表:
当您在SQL Server中使用时#someName,它会创建一个具有当前数据库连接范围的临时表。在您的情况下,#tempTable 在 Page1 中创建,并在 Page1 中的数据库连接关闭后立即删除。因此,当您从 Page2 打开连接时,该表不再存在。
全局临时表:
当您使用##someName(注意双哈希)时,它会创建一个可从多个连接访问的全局临时表。在某种程度上,它的工作方式类似于普通的数据库表,但存在于普通表中tempdb,并且通常比普通表慢。在您的情况下,您需要每个用户一张表;所以全局临时表不符合该标准。
Session存储:
如果数据量较小,可以考虑存储在Session变量中。此外,还有一个选项可以配置 Asp.Net 会话以使用 SQL 数据库。我以前从未这样做过,但这是你可以研究的事情。但是,在会话变量中存储对象时要非常小心,因为所有引用的对象(及其引用的对象等)也将被序列化并存储在会话中。
数据库表
在我看来,最好的选择是使用普通的数据库表来存储所有用户的数据,并使用带有每个用户键的列(如 SessionId)来保持数据分离。您还必须实施清理技术来删除旧数据。
| 归档时间: |
|
| 查看次数: |
1919 次 |
| 最近记录: |