1

私はdbと接続するためのWebアプリケーションを構築しています。 これまでのところ、私はそれに対処することができました(私はBLL & DALをビルドしませんでしたが)。Webアプリケーションのグローバル変数の作成 - ASP.NET

私はカラム "id"を持つテーブルを持っています。私は、自動的にインクリメントされるようにSQL Serverで宣言する方法があることを知っています。 (しかし私はそれを望んでいない)。

私は値を保持するグローバルアプリケーション変数を宣言したいと思います。

  1. が、私はそれを宣言する方法:

    私は2つの質問がありますか?

  2. 私はそれを作成して初期化しますか? (私はいくつかのログインページを持っています)。

THANKS!

p.s

誰かが私は私のストアドプロシージャとDALを構築すればよいかを私に教えてくれますかどうかは参考になりますか? 私はDALで何もできないBLLを使用する必要がありますか?

+2

db IDENTITYカラムを使用しない理由は何ですか? – InSane

+1

あなたのPSについて - 新しい質問をすることをお勧めします。 – Oded

答えて

5

Applicationオブジェクトを使用できます。これはHttpContextの一部であり、どのページでも直接アクセスできます。

これを使用したくない場合は、静的メンバーを保持するGlobalsクラス(または好きな名前)を書いてください。

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

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

いずれの方法も、Webファームや複数のWebアプリケーションを使用しても動作しないため、再起動しても機能しません。

にかかわらず、これらのオプションの

、適切なソリューション(あなたがそれを使用しない場合でも? - あなたは理由を説明することができます)、IDENTITY句でIDフィールドを使用することです。

+0

私は今、アプリケーションのテストを開始しており、IDはインセプションを維持していますか? – RonenIL

+0

@RonenIL - それはあなたが望むものではありませんか? – Oded

1

変数の格納は簡単な部分です。独自のID生成と競合と並行処理の問題を管理することは難しいことです。がんばろう。

1

ASP.NETには、グローバル変数のようなものはありません。 HTTPはステートレスです。

アプリケーションオブジェクトに何かを記憶している来ることができる最も近い:

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

しかしここでも、この変数はアプリが、それは随時行うことができ、再起動する必要があるときに失われます。

あなたが説明するもののはるかに良い解決策は、データベースの価値です。

0

整数を増やした後、その増分されたIDをdbに投げ込むことは危険に満ちています。マルチスレッド?アプリケーションがバウンスするとどうなりますか? devとprodのデプロイメントは同じ番号のセットを共有しますか?

グローバルに一意の識別子が必要で、データベースの外部で作成できるように思えます。これはGUIDの仕事のように聞こえる。確かに、それはデータベースのより多くのスペースを占めますが、おそらくあなたがデータベースに行う最悪のことではありません。

+0

GUIDもデータベースのインデックスが非常に貧弱です。擬似GUIDを作成するのに利用できるハックがありますが、これは簡単に索引を付けることができますが、少し苦労します。 PKとしてのGUIDは、データベース上でかなり一般的なパフォーマンスヒットです。 – David

関連する問題