Essential.LoggingのSQLロガーを使用しています。ここでライブラリのソースを見て、(最後に)見ました
SQLにログインするたびに:
using (var connection = DbProviderFactoryExtensions.CreateConnection(dbFactory, connectionSettings.ConnectionString))
{
using (var command = DbProviderFactoryExtensions.CreateCommand(dbFactory, CommandText, connection))
{
command.Parameters.Add(DbProviderFactoryExtensions.CreateParameter(dbFactory, "@ApplicationName", ApplicationName != null ? (object)ApplicationName : DBNull.Value));
// ..snip..
command.Parameters.Add(DbProviderFactoryExtensions.CreateParameter(dbFactory, "@Data", dataString != null ? (object)dataString : DBNull.Value));
connection.Open(); // <====
command.ExecuteNonQuery();
}
}
usingステートメントのすぐ上にあるヘルパー関数は次のとおりです。
public static DbConnection CreateConnection(DbProviderFactory dbFactory, string connectionString)
{
if (dbFactory == null) throw new ArgumentNullException("dbFactory");
var connection = dbFactory.CreateConnection();
connection.ConnectionString = connectionString;
return connection;
}
質問:
- それを行うたびにSQLサーバーへの接続を開いていますか(そして閉じていますか)?SQLサーバーへの接続をプールする方が効率的だと思いますよね?
- これをEntityFramework5.0(を使用
using (var db = new myDbContext()) { }
)に置き換えると、接続プールが発生しますか?