2009-03-17 9 views
5

asp.netのデータベースへの接続を管理する最良の方法は何ですか。asp.netアプリケーションのデータベースへの接続の管理

私のアプリケーションは、N層アーキテクチャを使用して構築されています。 DALは、

Public Shared Sub Delete(_ 
    ByVal connection As MyConnectionClass, _ 
    ByVal contact_id As Integer, _ 
    ByVal contact_timestamp As Date _ 
) 

    With connection.ProcParams 
     .Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32)) 
     .Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date)) 
    End With 

    connection.Execute("PKG_DATA_ACCESS.DeleteContact") 

End Sub 

ここで注意すべき点として、方法と静的クラスで構成され、IはBLLからDALへの接続を渡すことです。

ここでは私が考えている点はありますが、どれも問題ないようにアドバイスを求めています。

私は、私は彼ら(私は避けるようにしようとしているもの)を作成するように私のビジネスオブジェクトに渡し、その後、オブジェクトに格納し、マスターページ内の接続を作成する必要があります

は、私が使用して接続を作成する必要があります静的なクラスとCreateConnectionのようなメソッドを、私のビジネスオブジェクトのコンストラクタから呼び出す(何かしたいのですが、オブジェクトごとに接続したくないので、すべてのインスタンスで共有したいしかし、asp.netはマルチスレッドなので、静的クラスは接続を格納する意味がありません。

解決策は、Windows Forms環境でもうまく動作するはずです(sessiクラス内の静的メソッドを使用して現在のコンテキストで検索する)

+0

アプリケーション全体で同じ接続を共有することは、必ずしも良い方法ではありません。毎秒何百ものリクエストを持つウェブサイトを考えてみましょう。すべてがデータベースと同じ接続を行っています... –

+0

ユーザーあたりの接続についてもっと考えていましたが、Neil Nの答えはうまくありません。 – Martin

答えて

13

接続を永続化しないでください。それを使用している各スコープ内でインスタンス化します。 .Netは、あなたのための接続プールを管理します.Windowsフォームやasp.netでより堅牢です。

接続を保持しようとするのがセッションオブジェクトであるか、マスターページで実際にパフォーマンスを傷つけることになります。 BCさんのコメントから

接続文字列は、同じプールで終わるために同じ文字列でなければなりません。

+1

接続文字列を同じ文字列にして同じプールに入れる必要があることをここに追加する価値があります。 –

+0

私はそれについては考えていませんでした。この解決策は私のニーズに合っており、 ) – Martin

+0

ああ、素早く反応してくれてありがとう – Martin

関連する問題