2016-04-18 22 views
0

私は、ログインダイアログを使用してASP.NET Webフォームを使用してアプリケーションを作成しています。成功した認証の後、接続は開かれますが、接続オブジェクトは他のWebフォームからは見えません。永続的でアクセス可能にする方法はありますか(または一部のサーバーセッションオブジェクトで)、それは一般的に別の方法で行われていますか?任意のヒントをいただきました。Webフォーム間で永続的なデータベース接続を作成する方法

+0

実際に何かを実行していない限り、データベース接続を開いたままにしないでください。つまり、ログインしてConnectionを開いてユーザーの資格情報を確認した後、もう一度閉じます。これを行う一般的な方法は、DB操作を行うために呼び出すデータアクセスレイヤーを用意することです。そうでなければ、CallingメソッドにConnectionオブジェクトを返し、dbを開く/閉じるという静的関数を設定することをお勧めしますその方法から。 – JaggenSWE

答えて

1

最善の方法は、使用したい場所で接続を開いたり閉じたりすることです。共有したり、マルチスレッド環境であるASP.NETで静的な接続を使用したりしないでください。 IDisposableを実装するすべてのオブジェクトにusingステートメントを使用すると、すべてのアンマネージリソースが確実に破棄されます。これはまたしてもエラーには、接続を閉じます。

using(var con = new SqlConnection("connection string here")) 
{ 
    // do something ... 
} 

あなたは物理的な接続は/クローズ毎回開かなければならないことを恐れてする必要はありません。 .NET connection poolがそれを処理します。 Related

+0

私はあなたの点を礼賛する、ありがとう –

+0

あなたの質問に答えられたら、答えの一つを受け入れることを検討してください。最も役立つもの。 –

0

単純な例です。

DbConnectionProvider.cs

using System.Data.SqlClient 

public class DbConnectionProvider 
{ 
    public static SqlConnection GetDbConnection() 
    { 
    return new SqlConnection("MyConnectionString"); 
    } 
} 

を次にデータベース

を使用するために必要なすべてのクラスから:SqlConnectionオブジェクト(または使用しているものは何でもDB)を処理するクラスを設定し

ApplicationClass.cs

using System.Data.SqlClient 

public class ApplicationClass 
{ 
    private void GetSomeDbWorkDone() 
    { 
    using(SqlConnection Conn = DbConnectionProvider.GetDbConnection()) 
    { 
     //Do some fancy database operations here 
    } 
    } 
} 

このように、Connectionの詳細を変更する必要がある場合や、SqlConnectionオブジェクトに関して何か他の操作を行う必要がある場合は、コード内のすべてではなく一度だけ行う必要があります。

+1

そのクラスのメリットは何ですか?ただ、不必要なレイヤーが導入されるだけです。接続を静的にすることが賢明だと誰かが考えた場合、これは消滅の原因となります。 –

関連する問題