Realisticamente, MVC è principalmente un modello di implementazione dell'interfaccia utente, quindi la domanda è in qualche modo discutibile. Tuttavia, ci sono davvero solo due opzioni di grandi dimensioni. Generalmente il tuo controllore invia richieste per caricare o salvare entità nel tuo modello usando 1) un livello di servizio di qualche tipo o 2) il modello di Record attivo.
Il livello di servizio può assumere un numero qualsiasi di moduli, sebbene la mia preferenza personale sia di lavorare con un'astrazione di repository per le entità radice aggregate, le cui implementazioni concrete funzioneranno con ORM o con un DAO leggero o un'API per qualche archivio non relazionale se questo ha senso per l'applicazione.
Il pattern Active Record significa che il tuo modello ha la responsabilità della persistenza, anche se di solito significa che una classe base di qualche tipo gestisce i mapping al tuo negozio, quindi il tuo modello non è realmente direttamente coinvolto.
Fondamentalmente, il controllore invia richieste agli oggetti persistenti, sia che si tratti di una chiamata al repository, dell'implementazione di UnitOfWork o del metodo di salvataggio sulle entità. Se stai usando repository, i tuoi oggetti modello sono ignoranti alla persistenza.