Skip to content

Forum

Please or Register to create posts and topics.

EntityFramework DBFirst e Notifiche

Ciao e tutti,

Spero di scrivere nella sezione corretta.

Sto sviluppando una applicazione in WPF usando EF6 e SQL Server.

Seguendo il tutorial dal sito MS ho fatto in modo di ottenere delle  ObservableCollections dopo il caricamento dei dati.

Lato UI i controlli si aggiornano correttamente se aggiungo o elimino items ma ovviamente non se li modifico (in un altra window di editing) in quanto  i modelli delle classi generate non implementano l'interfaccia INotifyPropertyChanged. Essendo generati automaticamente, avrebbe pero' poco senso implementarla a mano visto che prima o poi dovrò rigenerarli per qualche modifica lato db.

I modelli sono delle partial class, cosa che ho sfruttato per implementare l'IDataErrorInfo per eseguire la validazione delle property.

Mi chiedevo quindi se ci fosse qualche metodo consigliato per venirne a capo elegantemente.

A me viene in mente solo di duplicare le classi modello ed implementare tutto da zero ma allora converrebbe ancora usare EF?

 

P.S.

Grande Sabrina, ottima iniziativa questa del forum. Alemik

Buongiorno Alemik,

Chi mi conosce sa che se posso evito Entity Framework proprio per il motivo per cui tu scrivi, infatti funziona perfettamente se non hai bisogno di modificare nulla riguardo le classi che lui genera e gestisce in automatico.

Però le partial classes sono sicuramente il modo migliore per aggiungere il codice personalizzato ad una classe autogenerata.

E' chiaro che ci sono delle cose che non puoi modificare senza metter mano a quello che EF genera, in questo caso, non credo vi siano modi "eleganti" per farlo.

Nonostante io non usi EF, ho comunque un generatore di codice che mi crea le classi base di gestione di una tabella in ADO.net, e anche in questo caso uso le partial classes per la parte di codice personalizzato.

Il mio metodo, quando devo per forza modificare una parte del codice generato in automatico, è copiare il pezzetto del codice che deve essere modificato sulla partial class manuale, e poi, quando rigenero la classe automatica per qualsiasi necessità, ovviamente vado a manina a cancellare il pezzo che ho spostato dall'altra parte.

Non è elegante, ma funzionale. Se qualcuno avesse qualche idea più interessante, sarebbe bello conoscerla.

saluti

 

Miky has reacted to this post.
Miky

Grazie Sabrina

Non ci avevo pensato a cancellare quello che EF genera. Non sarà elegante ma funzionerà sicuramente.

E' un po' di lavoro in più ma se non ci sono alternative avrei dovuto comunque farlo.