The KISS (Keep It Simple Stupid) approach dictates that a developers should keep the design of the application simple. I am not sure if I understand it completely. I mean what does SIMPLE mean. Does that mean I should start writing my data access code in my code behind pages? Or does that mean I should use DataSets and DataTables as my data carriers. I worked on couple of applications where the application started off very cleanly with few basic requirements like make a form that can insert data. In a period of 1 month thousand of users were using that applicatoin. The application went from a basic one page application to a mid size application.
This makes me think that should we always layer our application with the fear that it is going to become a monster in few months? With that fear in mind here is the class diagram of the current application I am working on.

When I could have resolved everything using the following approach.

The later approach uses a single data access abstract class. All the data access is performed using the SQLDataAccess class. The former approach uses the Repositories for each of the domain type to access the data.