Pregunta

estoy construyendo mi aplicación web para conectar con db. Hasta ahora he conseguido tratar con él, (aunque yo no construyo BLL y DAL).

Tengo una tabla que tiene la columna "ID". Sé que hay una forma de declarar que en el SQL Server que se incrementa automáticamente. (Pero yo no lo quiero).

quiero declarar una variable de aplicación global que contendrá el valor.

tengo 2 preguntas:

  1. ¿Cómo lo declaro?

  2. donde puedo crear y inicializarlo? (Tengo varias páginas de inicio de sesión).

GRACIAS!

p.s

sería de gran ayuda si alguien me dirá ¿Cómo construir el DAL con mis procedimientos almacenados? y para lo que necesito yo uso BLL, que no puedo hacer en el DAL?

¿Fue útil?

Solución

Puede utilizar el href="http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx" rel="nofollow"> Application objeto HttpContext y es directamente accesible en cualquier página.

Si no desea utilizarlo, es posible que desee escribir una clase Globals (o el nombre que prefieran) que mantiene los miembros estáticos.

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

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

Cualquiera de estos enfoques no trabajo de ustedes tienen una granja web o varias aplicaciones web y no se reinicia sobrevivir.


A pesar de estas opciones, la solución correcta. (Incluso si no quiere usarlo? - ¿puede explicar por qué), es utilizar el campo ID con la cláusula IDENTITY

Otros consejos

El almacenamiento de la variable es la parte fácil. La gestión de su propia generación ID y los problemas de contención y de concurrencia es la parte difícil. Buena suerte.

En realidad no hay tal cosa como una variable global en ASP.NET. Recuerde, HTTP no tiene estado.

Lo más cerca que se puede llegar almacenar algo en el objeto de aplicación:

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

Pero incluso en este caso, esta variable se pierde cuando las necesidades de aplicaciones para reiniciar, que se puede hacer de vez en cuando.

Una solución mucho mejor para lo que usted describe es un valor de base de datos.

incrementar un número entero y luego tirar que incrementa ID en el db está lleno de peligros. Multithreading? ¿Qué ocurre cuando los rebotes de aplicación? Hacen dev y prod implementaciones comparten el mismo conjunto de números?

Parece que necesita un identificador único global y se puede crear fuera de la base de datos. Eso suena como un trabajo para un GUID. Claro, se necesita más espacio en el PP, pero probablemente no es lo peor que se va a hacer a la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top