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