私のWebアプリケーションには次のクラスがあります。
public class DatabaseProvider {
private readonly IDbConnection _cn;
public DatabaseProvider(IDbConnection cn) {
_cn = cn;
}
public void ExecuteNonQuery(string query) {
// Execute the query
var cmd = _cn.CreateCommand();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
}
}
IDbConnectionの依存関係が次のコードを使用して宣言されている場合(Microsoft Unityを使用):
container.RegisterType<IDbConnection>(new InjectionFactory(c => {
var cn = new SqlConnection("...");
cn.Open();
return cn;
}));
これにより、SQLiteへの接続を次のように交換できます。
container.RegisterType<IDbConnection>(new InjectionFactory(c => {
var cn = new SQLiteConnection("Data Source=:memory:;Version=3;");
cn.Open();
return cn;
}));
テスト時にSQLiteを使用しますが、接続を開いたままにしておく必要があります。そうしないと、データが失われます。したがって、必要なときに接続を開いたり閉じたりすることはできません。
私は常にデータベースへの接続を必要なときに開いていましたが、これが大規模なアプリケーションに対応できるかどうか疑問に思っていましたか?
これをどのように改善できるかについてアドバイスをいただければ幸いです。ありがとう