title: What design patterns should I apply in application with database access
body: <p>I will start to develop an application that has to access to database. What kind of design patterns area usually need to be implemented to make my application more flexible for example changing DB client from SQL to Oracle. </p>
  
  <p>I believe to perform execution of some query I can implement Template Method Pattern. And to get connection a singleton pattern with double check would be sufficient. </p>
  
  <p>Is there anything else I should know before starting?</p>
  
  <p>Application will be developed in C#, so there is support for object inheritance and polymorphism.</p>
  
  <p>Any help is appreciated.</p>