Durante il mio apprendistato, ho utilizzato NHibernate per alcuni progetti più piccoli che ho principalmente codificato e progettato da solo. Ora, prima di iniziare un progetto più grande, è nata la discussione su come progettare l'accesso ai dati e se utilizzare o meno un livello ORM. Dato che sono ancora nel mio apprendistato e mi considero ancora un principiante nella programmazione aziendale, non ho davvero provato a spingere secondo me, che è che l'uso di un mappatore relazionale a oggetti per il database può facilitare molto lo sviluppo. Gli altri programmatori del team di sviluppo sono molto più esperti di me, quindi penso che farò solo quello che dicono. :-)
Tuttavia, non capisco completamente due dei motivi principali per non utilizzare NHibernate o un progetto simile:
- Si può semplicemente creare i propri oggetti di accesso ai dati con query SQL e copiare tali query da Microsoft SQL Server Management Studio.
- Il debug di un ORM può essere difficile.
Quindi, ovviamente potrei semplicemente costruire il mio livello di accesso ai dati con molti SELECT
s ecc., Ma qui mi manca il vantaggio dei join automatici, delle classi proxy a caricamento lento e di uno sforzo di manutenzione inferiore se una tabella ottiene una nuova colonna o una colonna ottiene rinominato. (Aggiornamento numerosi SELECT
, INSERT
e UPDATE
le query contro l'aggiornamento del config mappatura ed eventualmente refactoring le classi business e DTOs.)
Inoltre, usando NHibernate puoi incorrere in problemi imprevisti se non conosci molto bene il framework. Ciò potrebbe essere, ad esempio, fidarsi di Table.hbm.xml in cui si imposta la lunghezza di una stringa da convalidare automaticamente. Tuttavia, posso anche immaginare bug simili in un "semplice" livello di accesso ai dati basato su query SqlConnection.
Infine, gli argomenti sopra menzionati sono davvero un buon motivo per non utilizzare un ORM per un'applicazione aziendale basata su database non banale? Probabilmente ci sono altri argomenti che potrebbero essersi persi?
(Probabilmente dovrei aggiungere che penso che questa sia come la prima "grande" applicazione basata su .NET / C # che richiederà il lavoro di squadra. Le buone pratiche, che sono viste come abbastanza normali su Stack Overflow, come il test di unità o l'integrazione continua, non sono -esistenti qui fino ad ora.)