What is better is always complicated to assert without a specific context.People think that creating connections costs expensive and that there will be a complicated process. At least that's what I imagine, I'm not in their head. I know that many use this premise, but it may be that they are only copying what they saw wrong there.The fact is that the connection object is a pool, it delivers you a connection according to your need and knows how to manage the connections, and it is a well-thought and developed object by people who understand how to do. Everything works perfectly, with performance in a simplified way.It is even possible to create a simple abstraction to simplify something specific, but to create a Singleton, or a replacement for the connection, as I see in almost all the codes that the staff put here, is absurd, is a antipattern. It is a person who little or nothing understands the subject trying to create something certainly worse for little or no gain.So the two cases presented seem to be wrong. Of course, I didn't see that class. AcessoBancobut almost everyone does wrong.These reported problems probably occur because it is implementing wrong. And the right thing is not to implement any of this. It begins to create new problems to solve the problems that should never exist. If it was necessary an abstraction of this type for any application the .NET would provide. Never implement anything that cannot justify with property.I believe that the problem occurs because people try to create design patterns without even understanding what problem it is solving, this includes DAO or repository, in general it is quite complicated to do right, and almost always does not give the benefit that the person thinks will give, it is just doing what "ever" is doing, without understanding how to do.By the comment it seems not to make sense to have a Singleton, after all it has different connections, it is plural and not singular.