Passing databases creates accidental coupling and breaks business encapsulation.
Problems include tight coupling, mixed responsibilities, bijection violation, testability issues, business logic pollution, and violations of separation of concerns.
Solutions recommended are to use dependency injection, avoid using the Repository Pattern, separate business logic, and design for decoupling.
Refactorings and sample code are provided in the article to address the issue of mixing data access concerns with essential business behavior.