Звучит так, будто есть где-то несчастный TransactionScope
. _DBManager.CheckConnection
и _DBManager.SqlConnection
звучит так, как будто вы держите SqlConnection
, что, как я ожидаю, будет способствовать этому.
Если честно, в большинстве общих случаев вам лучше всего использовать встроенный пул подключений, а using
локально - то есть
using(var conn = new SqlConnection(...)) { // or a factory method
// use it here only
}
Здесь вы получите чистый SqlConnection
, который будет сопоставлен с неуправляемым соединением через пул, то есть он не создает фактическое соединение каждый раз (но выполнит логический сброс для очистки это).
Это также позволяет значительно более гибко использовать несколько потоков. Например, использование соединения static
в веб-приложении было бы ужасно для блокировки.