There seems to be a TransactionScope somewhere that is unfortunate. _DBManager.CheckConnection and _DBManager.SqlConnection sound like you are holding an SqlConnection around you, which I hope will help.
Honestly, in most common cases, you'd better use only the built-in connection pool and using your local connections - for example,
using(var conn = new SqlConnection(...)) {
Here you get a pure SqlConnection that will be mapped to an unmanaged connection through the pool, i.e. it does not create the actual connection every time (but will do a logical reset to clear it).
It also allows for much more flexible use from multiple threads. Using a static connection in a web application, for example, would be terrible for blocking.
source share