我正在做一些旧的webforms应用程序。我们有一些客户端,我们目前将一些信息存储在全局变量类中,例如:
Public Class globals
Enum Enterprise
Enterprise1 = 10
Enterprise2 = 11
...
End Enum
Enum Brand
Brand1 = 5
Brand2 = 6
Brand3 = 7
...
End Enum
...
End Class
事实是,即使我们在所有SQL sp中使用参数,我们也有一些常见的sp,在某些客户端有例外,所以你会发现SPs的代码如下:
if (id_enterprise = 10)
begin
... do whatever
end
就像你看到的"10"它是硬编码的,所以它是不可维护的,因此,全局变量不是完全全局的。
我不确定最有效的方法来处理这个,以结尾完全全局变量,但我想到的一个可能的解决方案是有一个存储全局变量的表,并以任何尚未定义的方式使用这些值作为全局SQL变量,也可以与代码共享。
关于代码,在应用程序启动时,我会读取该表(或SP或任何它结束)并将读取的变量存储在应用程序全局变量中(当然只有一次)。
你觉得怎么样?这有意义吗?还有其他更好的实现完全全局变量,可以在代码和SQL之间共享吗?顺便说一下,我们使用Azure,也许是Azure的替代品?
这是个有趣的问题。我建议在你的Azure SQL数据库中创建一个会话表,然后只保留一个整数/bigint变量作为会话变量。会话("user_session_id")。这将最小化应用程序的内存占用,并避免您担心的溢出问题。在会话开始时加载表项。在每个上下文中,只查找完成任何特定任务所需的参数。