Manage connection string
You create the SqlConnection only once, in the type constructor of ConnectionStringManager. Then you wrap its usage in a using block which is good practice but will dispose the object when it leaves the scope, so any subsequent usage will result in an ObjectDisposedException.

Instead, create a new connection in the GetOpenConnection method (maybe rename it to CreateConnection or similar in order to reflect the fact that there's work being done).