Question

Je construis mon application Web pour se connecter avec db. Jusqu'à présent, je suis parvenu à y faire face, (bien que je ne construis BLL et DAL).

J'ai une table qui a la colonne "id". Je sais qu'il ya un moyen de le déclarer dans le SQL Server à incrémenter automatiquement. (Mais je ne veux pas).

Je veux déclarer une variable d'application globale qui contiendra la valeur.

J'ai 2 questions:

  1. comment je le déclare?

  2. où je crée et l'initialiser? (J'ai plusieurs pages de connexion).

MERCI!

p.s

il serait utile que quelqu'un va me dire comment puis-je construire la DAL avec mes procédures stockées? et pour ce que je dois utiliser yo BLL que je ne peux pas faire dans le DAL?

Était-ce utile?

La solution

Vous pouvez utiliser la Application objet - il fait partie de la HttpContext et est directement accessible sur toute page.

Si vous ne voulez pas l'utiliser, vous pouvez écrire une classe Globals (ou tout ce que vous aimez le nom) qui contient les membres statiques.

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

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

Soit approche travail vous n'avez pas une batterie de serveurs Web ou plusieurs applications Web et ne survivra pas redémarre.


Indépendamment de ces options, la bonne solution. (Même si vous ne voulez pas l'utiliser - pouvez-vous expliquer pourquoi), est d'utiliser le champ ID avec la clause IDENTITY

Autres conseils

Le stockage de la variable est la partie facile. Gérer votre propre génération d'identité et les problèmes de contention et concurrence d'accès est la partie difficile. Bonne chance.

Il n'y a vraiment pas une telle chose comme une variable globale dans ASP.NET. Rappelez-vous, HTTP est sans état.

Le plus proche vous pouvez venir est stocker quelque chose dans l'objet Application:

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

Mais même ici, cette variable est perdue lorsque les besoins d'applications pour redémarrer, qu'il peut le faire de temps en temps.

Une bien meilleure solution pour ce que vous décrivez est une valeur de base de données.

Incrémentation un nombre entier et ensuite de lancer cet ID incrémentée dans le db est pleine de dangers. Multithreading? Qu'est-ce qui se passe quand les rebonds d'application? Est-ce dev et les déploiements de prod partagent le même ensemble de chiffres?

On dirait que vous avez besoin d'un identificateur global unique et peut être créé en dehors de la base de données. Cela sonne comme un travail pour un GUID. Bien sûr, il prend plus de place dans la db, mais il est sans doute pas la pire chose que vous allez faire à la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top