我正在构建我的Web应用程序以与DB连接。到目前为止,我已经设法处理了它(尽管我没有构建BLL&DAL)。

我有一个具有“ ID”列的表。我知道有一种方法可以在SQL Server中声明它自动增加。 (但是我不想要)。

我想声明一个将保存该值的全局应用变量。

我有2个问题:

  1. 我如何声明?

  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中的更多空间,但这可能不是您对数据库所做的最糟糕的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top