Forse si dovrebbe pensare l'utilizzo della EF nell'applicazione.contesto di EF dovrebbe essere utilizzato a più breve periodo di tempo possibile:
- Creare contesto
- Dati di carico
- dati Modificare
- Salva i dati contesto
- goccia
A causa di l'implementazione interna (IdentityMap, UnitOfWork) del contesto di vita lungo non è una buona scelta e con un breve contesto di vita non si desidera un comportamento menzionato al l. Anche nell'applicazione desktop è necessario utilizzare un approccio simile al contesto per modulo. Carichi i dati, presenti i dati al tuo utente e fino a quel momento solo l'utente può modificare i dati e premere il pulsante Salva: è responsabilità dell'applicazione affrontare i problemi di concorrenza in qualche modo (timestamp). La modifica automatica dei dati che fanno parte dell'unità di lavoro in esecuzione è una pessima idea - cosa succede se l'utente ha già modificato i dati? Sovrascriverà i suoi cambiamenti?
Edit:
Si può leggere di più su impelementation di ObjectContext
here.
Posso immaginare scenari in cui è necessaria la notifica di aggiornamento dei dati alle applicazioni client. Può essere la visualizzazione dei dati in tempo reale in sola lettura, ad esempio le informazioni sul trading azionario. Ma in tal caso hai bisogno di qualcosa di più potente. Non è uno scenario per il client che chiama ORM per ottenere dati, ma lo scenario per il cliente che sottoscrive un servizio/livello intermedio che gestisce il recupero dei dati e la notifica di modifiche rapide.
Per scenari semplici in cui è necessario aggiornare i dati solo in tempo semi-reale, è possibile utilizzare il polling: il client chiamerà nuovamente la query entro pochi secondi e utilizzerà la strategia StoreWins. Qualsiasi strategia di notifica è al di fuori dell'ambito di EF: è necessario implementarla come trigger, dipendenza SQL, modello di iscrizione o altro. Anche con la notifica sarai in grado di gestire alcuni eventi e richiedere i dati.
Ancora una volta, se si desidera ridurre il trasferimento di dati con il polling, è necessario un livello di servizio/medio che consenta un certo livello di memorizzazione nella cache (è anche possibile provare i servizi dati WCF).
fonte
2011-01-31 16:11:47
ottima domanda! Lo stesso problema/domanda: http://stackoverflow.com/questions/11627959/entity-framework-data-updates-in-a-multi-user-environment-with-central-database – juFo
Ho anche lo stesso problema –