Как решить проблему пула при подключении к базе данных с параллельным foreach? - PullRequest
0 голосов
/ 08 октября 2018

Я отправляю запрос к базе данных (54 машины) в параллельном цикле foreach, но получаю следующую ошибку:

"Истекло время ожидания. Время ожидания истекло до получения соединения из пулаВозможно, это произошло из-за того, что все пулы подключений использовались и был достигнут максимальный размер пула. "

Я пытался увеличить максимальный размер пула, но это не сработало.

Вот мой кодблок:

Parallel.ForEach(_machines, (machine, state) =>
{
var lastSavedShifts = 
NervousDataAdapter.GetLastShifts(machine.MachineName, 
machine.MachineType.ToString(), lastShiftTimes.Min(), 
lastShiftTimes.Max());
}

public List<DateTime> GetLastShifts(string machineName, string machineType, 
DateTime startDateTime, DateTime endDateTime)
{
try
{
var resultTable = ExecuteQuery(String.Format("A select query"));
//do something with response
}
}

protected DataTable ExecuteQuery(string query)
    {
    var sqlConnection = new SqlConnection(ConnectionString);
    var sqlDataAdapter = new SqlDataAdapter(query, sqlConnection);
    var dataSet = new DataSet();
    try
    {
    sqlDataAdapter.Fill(dataSet);
    return dataSet.Tables[0];
    }
    finally
    {
    if (sqlConnection.State == ConnectionState.Open)
    {
    sqlConnection.Close();
    }
    }
    }
...