Minha pergunta é mais sobre como arquitetar um aplicativo MVC. Por exemplo, somos encorajados a usar DI com o padrão Repository para desacoplar o acesso a dados do controlador, no entanto, muito pouco é dito sobre COMO fazer isso especificamente para o MVC. Onde colocaríamos as classes Repository, por exemplo? Eles não parecem ser especificamente relacionados ao modelo, pois o modelo também deve ser relativamente dissociado das tecnologias de acesso a dados reais.
Uma segunda pergunta envolve como estruturar as camadas ou camadas. A maioria dos aplicativos de exemplo (jantar Nerd, Music Store etc.) parece usar uma abordagem de camada única, de duas camadas (sem contar os testes) que normalmente possui controladores que chamam diretamente o código L2S ou EF.
Se eu quiser criar um aplicativo multicamada / camada, quais são algumas das práticas recomendadas no MVC?