L'applicazione che sto attualmente costruendo ha utilizzato procedure memorizzate e modelli di classe realizzati a mano per rappresentare oggetti di database. Alcune persone hanno suggerito l'uso di Entity Framework e sto pensando di passare a questo poiché non sono così lontano nel progetto. Il mio problema è che sento che le persone che discutono di EF mi stanno solo dicendo il lato positivo delle cose, non il lato negativo:)
Le mie preoccupazioni principali sono:
- Vogliamo la validazione lato client usando DataAnnotations, e sembra che devo comunque creare i modelli lato client quindi non sono sicuro che EF risparmierà molto tempo di codifica
- Vorremmo mantenere le classi più piccole possibile quando si passa attraverso la rete, e ho letto che usare EF spesso include dati extra che non sono necessari
- Abbiamo un livello di database complesso che attraversa più database e non sono sicuro che EF possa gestirlo. Abbiamo un database comune con cose come Users, StatusCodes, Types, etc e più istanze dei nostri database principali per diverse istanze dell'applicazione. Le query SELECT possono ed eseguiranno query su tutte le istanze dei database, tuttavia gli utenti possono modificare solo gli oggetti presenti nel database su cui stanno lavorando. Possono cambiare i database senza ricaricare l'applicazione.
- Le modalità oggetto sono molto complesse e ci sono spesso alcuni join coinvolti
Gli argomenti per EF sono:
- Concorrenza. Non avrei bisogno di codificare i controlli per vedere se il record è stato aggiornato prima di ogni salvataggio
- Generazione del codice. EF può generare modelli di classi parziali e POCO per me, tuttavia non sono sicuro che questo mi risparmierebbe molto tempo poiché penso che avremmo ancora bisogno di creare i modelli lato client per la convalida e alcuni metodi di analisi personalizzati.
- Velocità di sviluppo poiché non avremmo bisogno di creare le stored procedure CRUD per ogni oggetto di database
La nostra architettura attuale consiste in un servizio WPF che gestisce le chiamate al database tramite stored procedure parametrizzate, oggetti POCO che vanno dal / al servizio WCF e il client WPF e il client desktop WPF stesso che trasforma POCO in classe Modelli per lo scopo di convalida e DataBinding.
Quindi la mia domanda è, EF è giusto per questo? Ci sono delle insidie riguardo EF di cui non sono a conoscenza?