Domanda

Sto costruendo la mia applicazione web per connettersi con db. finora sono riuscito a che fare con essa, (anche se non ho costruire BLL e DAL).

Ho una tabella che ha colonna "id". So che c'è un modo per dichiarare nel SQL Server per essere incrementato automaticamente. (Ma io non lo voglio).

Voglio dichiarare una variabile di applicazione globale che conterrà il valore.

ho 2 domande:

  1. come mi dichiaro?

  2. dove creo e inizializzarlo? (Ho parecchie pagine di login).

GRAZIE!

P.S

sarebbe utile se qualcuno mi dirà come faccio a costruire il DAL con i miei stored procedure? e per quello che ho bisogno di yo uso BLL che i cant fare nel DAL?

È stato utile?

Soluzione

È possibile utilizzare la href="http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx" rel="nofollow"> Application oggetto HttpContext ed è direttamente accessibile su qualsiasi pagina.

Se non si desidera utilizzarlo, si consiglia di scrivere una classe Globals (o qualunque nome) che contiene i membri statici.

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

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

Entrambi gli approcci non funzionerà di voi hanno un web farm o più applicazioni Web e non sopravviverà riavviato.


Indipendentemente da queste opzioni, la giusta soluzione. (Anche se non si desidera utilizzarlo? - si può spiegare perché), è quello di utilizzare il campo ID con la clausola IDENTITY

Altri suggerimenti

Memorizzazione la variabile è la parte facile. Gestire la propria generazione ID e le questioni di contesa e di concorrenza è la parte difficile. Buona fortuna.

Non c'è davvero una cosa come una variabile globale in ASP.NET. Ricordate, HTTP è senza stato.

Il più vicino si può venire sta memorizzando qualcosa nell'oggetto Application:

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

Ma anche qui, questa variabile si perde quando le esigenze di applicazioni per riavviare, che si può fare di tanto in tanto.

Una soluzione molto migliore per ciò che si descrive è un valore del database.

Incremento un intero e poi gettare che ID incrementato nel db è carico di pericolo. Multithreading? Cosa succede quando i rimbalzi di applicazione? Fare dev e implementazioni prod condividono lo stesso insieme di numeri?

Sembra che tu abbia bisogno di un identificatore univoco globale e possono essere creati al di fuori del database. Che suona come un lavoro per un GUID. Certo, ci vuole più spazio nel db, ma probabilmente non è la cosa peggiore che si sta per fare per il database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top