私は、ADO.NETとLINQの両方を使用して、1つのサーバー上のデータベースのペアにアクセスするクラスを持っています。 DB内のテーブルは広範ではないので、エンティティオブジェクトはかなり軽いです。私はもちろん、経験とネット記事を使って、私のようにコードを書きました。たとえば...接続プーリングの観点から何か問題がありますか?
http://dotnetperls.com/sqldataadapter http://www.velocityreviews.com/forums/t71781-set-maximum-pool-size-in-web-config.html http://msdn.microsoft.com/en-us/library/ms971481#adonetbest_topic5
あるサーバー私のコードを実行しているのは自分のコードを実行しているだけで、dbホストと同じサーバーではありません。私の.NETアプリケーションサーバー(それはWindowsサービスだが、今は重要ではないように思えるので、私はそこに住みたいとは思わない)からDBサーバーに向かう接続を見てみると、接続数は約200ですが、確かにそれより少ないはずです。私はappSettings.configで最大プールサイズを10に設定しているので、約10でなければなりません。
誰でも私の接続コードを見て、私が接続を引き起こす何かをしているかどうか教えてください。ここで
は私のLINQのDBコンテキストの作成である:ここで
private const string ConnectionKey = "SQL2";
protected static string ConnectionString
{
get
{
return _connectionString = (_connectionString == null) ? ConfigurationManager.ConnectionStrings[ConnectionKey].ConnectionString : _connectionString;
}
}
private static string _connectionString = null;
protected static PricingDBDataContext ContextDB
{
get
{
if (_context == null)
{
_context = new PricingDBDataContext(ConnectionString);
}
return _context;
}
}
private static PricingDBDataContext _context = null;
は、物事のADO.NET側である:
protected DataSet GetDataSet(bool isSproc, string cmdStr, params object[] args)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
{
cmd.CommandType = isSproc ? CommandType.StoredProcedure : CommandType.Text;
for (int index = 0; index < args.Length; index += 2)
cmd.Parameters.AddWithValue(args[index].ToString(), args[index + 1]);
conn.Open();
DataSet set = FillSet(cmd);
conn.Close();
return set;
}
}
}
private DataSet FillSet(SqlCommand cmd)
{
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet set = new DataSet();
adapter.Fill(set);
return set;
}
おかげで、
マット。
感謝して配置されなければなりません。上記の私のコードでは、私はすべてのことをやっていると信じています。接続Max Pool Sizeの設定は、無理矢理最後の試みでした。私のコードが間違っていると思いますか? –