1

dbに接続するためのWebアプリケーションを構築しています。これまでのところ、私はそれに対処することができました(ただし、BLLとDALは作成していません)。

列「id」を持つテーブルがあります。SQLServerで自動的にインクリメントされるように宣言する方法があることを私は知っています。(しかし、私はそれを望んでいません)。

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

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

  1. どのように私はそれを宣言しますか?

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

ありがとう!

ps

誰かがストアドプロシージャを使用してDALを構築する方法を教えてくれると助かりますか?そして、私が必要とするもののために、私はDALではできないBLLを使用しますか?

4

4 に答える 4

5

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

使用したくない場合は、Globals静的メンバーを保持するクラス(または任意の名前)を作成することをお勧めします。

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

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

どちらのアプローチも、Webファームまたは複数のWebアプリケーションを使用している場合は機能せず、再起動後も存続しません。


これらのオプションに関係なく、正しい解決策は(使用したくない場合でも、理由を説明できますか?)、IDENTITY句でIDフィールドを使用することです。

于 2010-12-28T14:38:33.953 に答える
1

変数の保存は簡単です。独自のID生成と、競合および同時実行の問題を管理することは難しい部分です。幸運を。

于 2010-12-28T14:41:35.660 に答える
1

ASP.NETには、グローバル変数のようなものは実際にはありません。HTTPはステートレスであることを忘れないでください。

最も近いのは、Applicationオブジェクトに何かを格納することです。

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

ただし、ここでも、アプリを再起動する必要がある場合、この変数は失われます。これは、時々実行できます。

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

于 2010-12-28T14:41:56.120 に答える
0

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

グローバルに一意の識別子が必要であり、データベースの外部で作成できるようです。それはGUIDの仕事のように聞こえます。確かに、データベース内でより多くのスペースを占有しますが、データベースに対して行う最悪のことではない可能性があります。

于 2010-12-28T14:43:48.713 に答える