R – ASP.NET MVC Architecture


I'm curious about the architecture in ASP.NET MVC. How I should get data from a database?
The ASP.NET videos and tutorials shows that all data should be handled in the Models, so I thought this was the way to go. I've started at a new job and here they prefer to get data in the Controllers.

What is the most correct way to go? I know this is could lead to a long answer, so if you know any sites, articles, blogs or what ever and the subject, you are welcome to just post that 🙂

Thanks in advance.

Best Solution

In general you want to keep views clear of logic and controllers as small as possible doing nothing more then taking a call, passing it on to the appropriate business logic getting the model back and passing it to the view. So no SQL or anything like that within the controller. That would be analogous to putting all code in page_load in webforms which is unsustainable in the long term. A controllers task is to handle a URL request. Nothing else.

Check out MVC in Action for allot of in-depth information. Or the first chapter from Professional ASP.NET MVC 1.0 available for free here. It takes you from file->new trough the creation of an application showing a simple way to get data access out of the controller.

Although more complex if you want to check out some references architectures check out the S#arp arhictecture project or the onion architecture and code camp server. They provide a complete architecture for MVC applications focussing on sepperation of concerns, domain driven design and unit testing. It might take a while grokking everything but once you do they provide a very clear way to structure things and to work on things consistently with a group of developers.