我正在构建我的 Web 应用程序以连接数据库。到目前为止,我已经设法处理它,(虽然我没有建立 BLL 和 DAL)。
我有一个包含“id”列的表。我知道有一种方法可以在 SQL Server 中声明它以自动递增。(但我不想要它)。
我想声明一个将保存该值的全局应用程序变量。
我有两个问题:
我如何声明它?
我在哪里创建并初始化它?(我有几个登录页面)。
谢谢!
ps
如果有人能告诉我如何用我的存储过程构建 DAL,那会很有帮助?对于我需要你使用我在 DAL 中不能做的 BLL 吗?
我正在构建我的 Web 应用程序以连接数据库。到目前为止,我已经设法处理它,(虽然我没有建立 BLL 和 DAL)。
我有一个包含“id”列的表。我知道有一种方法可以在 SQL Server 中声明它以自动递增。(但我不想要它)。
我想声明一个将保存该值的全局应用程序变量。
我有两个问题:
我如何声明它?
我在哪里创建并初始化它?(我有几个登录页面)。
谢谢!
ps
如果有人能告诉我如何用我的存储过程构建 DAL,那会很有帮助?对于我需要你使用我在 DAL 中不能做的 BLL 吗?
您可以使用该Application
对象 - 它是 的一部分,HttpContext
并且可以在任何页面上直接访问。
如果您不想使用它,您可能需要编写一个Globals
包含静态成员的类(或您喜欢的任何名称)。
public class Globals
{
public static int Counter { get; set;}
}
// accessed from other classes:
Globals.Counter++;
任何一种方法都不适用于您拥有一个 Web 场或多个 Web 应用程序,并且无法在重新启动后存活。
不管这些选项如何,正确的解决方案(即使您不想使用它——您能解释一下原因吗?)是使用带有IDENTITY
子句的 ID 字段。
存储变量是容易的部分。管理您自己的 ID 生成以及争用和并发问题是困难的部分。祝你好运。
在 ASP.NET 中确实没有全局变量之类的东西。请记住,HTTP 是无状态的。
最接近的方法是在 Application 对象中存储一些东西:
Application["myvar" ] = x;
x = Application["myvar"];
但即使在这里,当应用程序需要重新启动时,这个变量也会丢失,它可以不时地这样做。
您所描述的更好的解决方案是数据库值。
增加一个整数,然后将增加的 ID 扔到数据库中是充满危险的。多线程?应用程序弹跳时会发生什么?dev 和 prod 部署是否共享同一组数字?
听起来您需要一个全局唯一标识符,并且可以在数据库之外创建。这听起来像是 GUID 的工作。当然,它在数据库中占用了更多空间,但这可能不是您要对数据库做的最糟糕的事情。