There are many ways to split up your solution structure in many layers. My favorite way of doing it is as the diagram bellow describes:
- Presentation layer: where my screens/pages are, all they know is how to display data they receive
- Services layer: where all my business rules are, the services classes are responsible for manipulating data
- Data layer: where my database access and my database models are
- Crosscutting: classes used by the entire solution, read more about it on MSDN
Another example which looks very similar is one posted on MSDN
This is enough to keep your solution clean and with a clear separation on concerns.
The hint is to avoid complicating what does not need complicating.