Quali sono gli scenari disconnessi in Entity Framework?

2

Non sono sicuro di capire che cosa rientrano tutti negli scenari contestuali disconnessi in EF (vedi questo e questo ). Questo link dice che utilizzare i servizi API Web o WCF per evitare la complessità delle soluzioni EF di livello disconnesse.

Ecco la mia comprensione. Se creo un nuovo DbContext, ottengo alcune entità, passalo a un altro processo / macchina (qualsiasi cosa non rientra nell'ambito del contesto corrente), e lì apporto alcune modifiche a queste entità e provo a salvarle, quindi questo è uno scenario disconnesso . EF non saprà se si tratta di aggiungere o aggiornare o quali campi sono stati modificati, a meno che non lo dica esplicitamente.

Supponiamo di avere un'app MVC, con un UserController. L'UserController accetta un IUsserService tramite l'iniezione delle dipendenze. UserService, l'implementazione concreta di IUserService richiede un UnitOfWork. Il mio DbContext è istanziato per UnitOfWork e SaveChanges () è chiamato solo su Commit () di UnitOfWork. Ho anche impostato la durata di DbContext in Unity come PerRequestLifetime - > il che significa che viene creata un'istanza per ogni HttpRequest. Il mio UserService funziona con diverse entità necessarie per svolgere il proprio lavoro. Credo che questo non sia uno scenario disconnesso, poiché il mio contesto è lo stesso in ?

Se il mio controller MVC era in una macchina (web) e UserService in un'altra macchina (app - endpoint http esposti con webapi), qualcosa cambia? In questo caso, ho bisogno che DbContext inizi solo con ApiController e tutto rimarrà all'interno del livello dell'app. Quindi evito ancora i contesti disconnessi. Ho ragione?

Se non sono chiaro, posso inserire del codice, ma non c'è niente di diverso lì dentro.

    
posta Narayana 27.01.2014 - 18:50
fonte

1 risposta

3

Le parole "contesto disconnesso" si riferiscono al fatto che la maggior parte delle moderne applicazioni Web si collegano al database abbastanza a lungo da recuperare e archiviare i dati per tutta la durata di una singola pagina web. Sebbene possano mantenere una sessione , in genere non mantengono una connessione persistente come fa un'applicazione client / server.

Fondamentalmente ciò che stanno dicendo è che ora ci sono strutture migliori per gestire scenari di dati disconnessi, come Web API e Servizi WCF. Questi servizi gestiscono tutta la complessità dietro le quinte della memorizzazione e del recupero dei dati (con l'aiuto della programmazione, ovviamente), mantenendo un'API frontale che è conforme a REST.

    
risposta data 27.01.2014 - 20:08
fonte

Leggi altre domande sui tag