|
|
1
6
问题是#Temp表仅存在于连接和执行范围内。
这里的解决方案是使用##温度表。它们跨越了范围和联系。 然而,危险在于,如果你使用硬编码的名称,那么同时运行的程序的两个实例可能会看到同一个表。因此,动态地将表名设置为始终唯一的名称。 |
|
|
2
6
SQL Server中有两种类型的临时表,本地临时表和全局临时表。来自BOL:
本地温度表将持续使用 您当前的连接。全局变量将可用于所有连接。因此,如果你在相关调用中重用(你确实说过可以)相同的连接,你就可以使用本地临时表,而不用担心同时进行的进程会干扰彼此的临时表。 |
|
|
3
1
在C#中处理这个概念时,您可以看看存储库模式。这允许您拥有一个用于数据访问的低级存储库层,其中每个方法都执行一个任务。但是,连接被传递给方法,实际操作在事务范围内执行。这意味着您理论上可以在数据访问层(实现为存储库)中调用许多不同的方法,如果其中任何一个方法失败,您可以回滚整个操作。 http://martinfowler.com/eaaCatalog/repository.html 问题的其他方面将由标准sql处理,您可以在其中动态创建表、插入表、删除表等。这里棘手的部分是让一笔交易远离另一笔交易。你可以考虑使用临时表。..或者,您可能只是有一个专门用于执行此动态表概念的第二个数据库。 |
|
|
4
0
|
|
|
5
0
扩展单磅符号#Temp的范围/生命周期的一种方法是使用事务。只要事务存在,#temp表就会继续存在。您还可以使用TransactionScope来获得相同的效果,因为TransactionScope在后台创建环境事务。
这可能比使用双磅临时表更可取,因为##临时表是全局对象。如果您有多个客户端碰巧使用相同的##temp表名,那么它们可能会相互攻击。此外,##临时表在服务器重启后无法存活,因此从技术上讲,它们的寿命不是永远的。依我之见,最好控制#temp表的范围,因为它们是有限的。
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |