2010-02-22 9 views
8

Nella nostra applicazione a livelli, si accede al database tramite chiamate WCF. Stiamo creando e disponendo i contesti per richiesta. Inoltre stiamo usando l'approccio POCO.
La mia domanda è, in puro modello POCO (POCO ignoranti completamente persistenti) è possibile tenere traccia delle modifiche, mentre stiamo creando e disponendo contesto per richiesta (come contesto precedente è disposto in tale chiamata di servizio)? Se sì, come EF gestisce questa situazione? Per quanto posso vedere, 2 meccanismi (tracciamento delle modifiche basato su snapshot e tracciamento delle modifiche basato sulla notifica con i proxy) non saranno in grado di gestirli? In caso negativo, come dovremmo gestire il contesto in modo da essere in grado di tracciare le modifiche?Entitity Framework: tracciamento delle modifiche in SOA con approccio POCO

risposta

2

Sfortunatamente non è possibile trovare una soluzione semplice in Entity Framework v1.0. C'è stato molto discussion e poca risoluzione. È uno dei molti problemi noti con EF v1.0 e in un modo o nell'altro si finirà per dover scrivere molto codice per gestirlo.

In .NET 4.0 il team di ADO.NET ha introdotto Self-Tracking Entities per risolvere questo problema.

6

direi:

Non utilizzare entità auto-tracking in un ambiente puro SOA: Le entità auto-monitoraggio funzionano solo quando i client utilizzano le classi proxy generate.

Quando si esegue SOA dal libro, non è possibile aspettarsi che i propri client siano. Net o anche più, .Net 4.0; Qual è l'unico scenario in cui le entità di tracciamento automatico funzioneranno. I tuoi servizi saranno inutili per qualsiasi altro cliente.

Just My 2 centesimi, saluti, Koen

3

Enti Auto-tracking effettivamente risolvere questo problema se si è in grado di condividere il modello con il cliente anziché utilizzare i metadati generati dal riferimento.

Riassunto STEs e facendoli riferimento dal client, si avrà accesso al tracciamento disconnesso dal contesto.

+0

Per quanto riguarda i riferimenti abbreviati a * "Entità di tracciamento automatico" *, si noti che per le abbreviazioni da utilizzare, è necessario prima introdurre quello che viene abbreviato. – XenoRo