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
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.
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
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.
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