Pattern di repository: Doctrine2 vs Microsoft Entity Framework?

1

Uso Symfony2 con Doctrine2 da alcuni anni. Recentemente ho iniziato a utilizzare Entity Framework di Microsoft con MVC5. Dalla mia esperienza su Symfony2 capisco che il lavoro di un repository è solo quello di recuperare e restituire oggetti, senza operazioni aggiuntive come Salvataggio. Ora ogni esempio che ho visto per EF ha un metodo Save / Update come parte del repository.

Per symfony ho creato le classi manager come segue:

interface IManager
{
    function getClassName() ;
    IRepository getRepository() ;
    function Save(object);
    function Update();
}

Quindi passo il gestore, se ho bisogno di recuperare oggetti, chiamo direttamente il repository. Se devo salvare, chiamo il metodo di salvataggio del manager.

Un repository dovrebbe supportare il salvataggio / l'aggiornamento? Cosa pensi della mia classe IManager, dovrei anche usarla per EF?

    
posta d0001 05.07.2014 - 21:27
fonte

2 risposte

1

Penso che ciò che ti confonde di EF è il contesto del database. Permette di interrogare oggetti come un repository e salvare le modifiche in persistenza come una unità di lavoro.

Hai molto lavoro svolto con il contesto del database EF. Tutto ciò che devi fare è separare le responsabilità creando repository specifici e un'unità di lavoro che condivide il contesto del database e pesa tutti i cambiamenti di presistenza con una sola chiamata di salvataggio.

Controlla questo link per creare Repository e UoW in EF. È chiaro e facile da capire.

    
risposta data 03.12.2014 - 09:21
fonte
0

Entity Framework non è l'implementazione del modello di repository. EF è l'Object Relational Mapper. Sì, sembra e si comporta come pattern di repository con funzionalità di salvataggio / aggiornamento.

Il tuo IManager ha senso, e con una sufficiente astrazione, il Manager non deve essere necessariamente associato a EF. Ciò ti darà la possibilità di cambiare gli ORM, se necessario.

    
risposta data 05.07.2014 - 22:55
fonte

Leggi altre domande sui tag