Talvolta mi viene chiesto se conosco qualche generatore di codice per NHibernate, ovvero qualche cosa che possa partire da un database e possa generare classi e mapping in modo da essere operativi con NH in poco tempo. Sinceramente ne conosco qualcuno, ma non li ho mai usati.
La ragione è forse in questo post, se ho già un databse fatto, la cui struttura non verrà modificata troppo spesso, Entity Framework mi permette una più rapida operatività, ma mi genera un object model che è tutto tranne che OOP. Ripeto infatti quello che ho scritto tempo fa, per me EF è ancora un Super-Dataset, anche se la direzione che sta prendendo è decisamente interessante.
In realtà la ragione vera è che se voglio un ORM con tutti i crismi, come NH, allora è perchè voglio lavorare Entity First, e l’ORM dovrebbe permettermi di usare un DB SQL nella maniera più trasparente possibile. Se mi trovo a dovere generare il modello dal DB, significa che mi basta un dataset.
La seconda ragione è che ogni generatore di codice genera quello che gli pare, mentre io ho le mie classi base, i miei pattern per le proprietà, etc etc, e non mi piace che le classi di Dominio, ovvero quelle dove dovrebbe stare la logica, vengano generate su uno schema imposto da chi ha fatto il generatore. (questo anche se poi con le partial class posso andare ad “aggiungere” alle classi generate).
Insomma, se dovete generare classi da db, magari EF è la soluzione migliore.
Gian Maria.