У меня есть класс, который использует ADO.NET и LINQ для доступа к паре баз данных на одном сервере.Таблицы в БД не являются обширными, поэтому объекты сущностей довольно легкие.Я написал код так же хорошо, как я, используя опыт и сетевые статьи, конечно.Например ...
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
Сервер, на котором выполняется мой код, только выполняет мой код и не является тем же сервером, что и база данныххост.Судя по соединениям, идущим к серверу БД с моего сервера приложений .NET (это служба Windows, но я не хочу останавливаться на этом, поскольку сейчас это кажется несущественным), число соединений составляет около 200, но этоконечно должно быть меньше этого;Это должно быть около 10, так как я установил Max Pool Size равным 10 в appSettings.config.
Может ли кто-нибудь взглянуть на мой код подключения и сказать мне, если я делаю что-то, что может вызвать соединениястрелять, пожалуйста?
Вот мое создание контекста 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;
}
Спасибо,
Мат.