グローバルにアクセス可能なSQL接続オブジェクトが1つだけ必要な場合は、静的コンストラクターを持つ静的クラスを使用してすべてがアクセスできるように、静的クラスを調べてください。
私はこれをしませんが、学習していれば害はありませんが、静的/シングルトンは、アプリケーション全体でコンポーネントのインスタンスを 1 つ持つためによく使用されます。
// Simple static example
public static class DatabaseConnection
{
public static IDBConnection ActiveConnection {get; private set;}
static DatabaseConnection()
{
var myConnectionString = // get your connection string;
ActiveConnection = new SqlConnection(myConnectionString);
ActiveConnection.Connect(); // This is bad, really should be in a using
}
}
// Simple static usage
DatabaseConnection.ActiveConnection.ExecuteQuery(blah);
問題は、そのリソースを制御できず、アプリが閉じるまで接続を閉じないことです。これは悪い習慣であるため、グローバルにアクセス可能な機能を維持しながら、これをわずかに改善できます。
// Better static example using actions
public static class DatabaseConnection
{
private static string connectionString;
public static void OpenConnectionAnd(Action<Connection> actionToDo)
{
using(var connection = new SqlConnection(this.connectionString))
{
connection.Connect();
actionToDo.Invoke(connection);
connection.Disconnect();
}
}
static DatabaseConnection()
{
this.connectionString = // get your connection string;
}
}
// Better usage example
DatabaseConnection.OpenConnectionAnd(x => x.Execute(blah));
上記を頭のてっぺんに書いているだけなので、構文は100%正しいとは限りませんが、有用なほど十分に近いはずです。