为Web应用程序创建全局变量-ASP.NET
-
13-10-2019 - |
题
我正在构建我的Web应用程序以与DB连接。到目前为止,我已经设法处理了它(尽管我没有构建BLL&DAL)。
我有一个具有“ ID”列的表。我知道有一种方法可以在SQL Server中声明它自动增加。 (但是我不想要)。
我想声明一个将保存该值的全局应用变量。
我有2个问题:
我如何声明?
我在哪里创建并初始化它? (我有几个登录页面)。
谢谢!
PS
如果有人告诉我如何使用我的存储程序构建DAL,这将有所帮助?对于我需要的东西,您可以在DAL中使用BLL吗?
解决方案
您可以使用 Application
对象 - 它是 HttpContext
并且可以在任何页面上直接访问。
如果您不想使用它,则可能需要写一个 Globals
拥有静态成员的类(或您喜欢的任何名称)。
public class Globals
{
public static int Counter { get; set;}
}
// accessed from other classes:
Globals.Counter++;
无论您使用网络农场或几个网络应用程序,都无法使用,并且无法在重新启动时幸存下来。
不管这些选项如何,正确的解决方案(即使您不想使用它 - 您可以解释为什么吗?) IDENTITY
条款。
其他提示
存储变量是简单的部分。管理自己的ID生成以及争论和并发问题是困难的部分。祝你好运。
确实没有ASP.NET中的全局变量。请记住,HTTP是无状态的。
您最接近的是在应用程序对象中存储某些东西:
Application["myvar" ] = x;
x = Application["myvar"];
但是即使在这里,当应用需要重新启动时,该变量也会丢失,它可以不时地进行。
您描述的更好的解决方案是数据库值。
将整数递增,然后将增量ID投入到DB中充满危险。多线程?应用程序弹跳时会发生什么?开发人员和产品部署是否共享相同的数字集?
听起来您需要全球唯一的标识符,并且可以在数据库之外创建。对于GUID来说,这听起来像是一份工作。当然,它占用了DB中的更多空间,但这可能不是您对数据库所做的最糟糕的事情。
不隶属于 StackOverflow