1

我正在构建我的 Web 应用程序以连接数据库。到目前为止,我已经设法处理它,(虽然我没有建立 BLL 和 DAL)。

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

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

我有两个问题:

  1. 我如何声明它?

  2. 我在哪里创建并初始化它?(我有几个登录页面)。

谢谢!

ps

如果有人能告诉我如何用我的存储过程构建 DAL,那会很有帮助?对于我需要你使用我在 DAL 中不能做的 BLL 吗?

4

4 回答 4

5

您可以使用该Application对象 - 它是 的一部分,HttpContext并且可以在任何页面上直接访问。

如果您不想使用它,您可能需要编写一个Globals包含静态成员的类(或您喜欢的任何名称)。

public class Globals
{
  public static int Counter { get; set;}
}

// accessed from other classes:
Globals.Counter++;

任何一种方法都不适用于您拥有一个 Web 场或多个 Web 应用程序,并且无法在重新启动后存活。


不管这些选项如何,正确的解决方案(即使您不想使用它——您能解释一下原因吗?)是使用带有IDENTITY子句的 ID 字段。

于 2010-12-28T14:38:33.953 回答
1

存储变量是容易的部分。管理您自己的 ID 生成以及争用和并发问题是困难的部分。祝你好运。

于 2010-12-28T14:41:35.660 回答
1

在 ASP.NET 中确实没有全局变量之类的东西。请记住,HTTP 是无状态的。

最接近的方法是在 Application 对象中存储一些东西:

Application["myvar" ] = x;
x = Application["myvar"];

但即使在这里,当应用程序需要重新启动时,这个变量也会丢失,它可以不时地这样做。

您所描述的更好的解决方案是数据库值。

于 2010-12-28T14:41:56.120 回答
0

增加一个整数,然后将增加的 ID 扔到数据库中是充满危险的。多线程?应用程序弹跳时会发生什么?dev 和 prod 部署是否共享同一组数字?

听起来您需要一个全局唯一标识符,并且可以在数据库之外创建。这听起来像是 GUID 的工作。当然,它在数据库中占用了更多空间,但这可能不是您要对数据库做的最糟糕的事情。

于 2010-12-28T14:43:48.713 回答