Etichette

domenica 5 febbraio 2012

Entity Framework Vs NHibernate

Finalmente ritorno a scrivere qualcosa di informatica!!
Faccio una premessa d'obbligo,  io non voglio essere sempre contro i prodotti di microsoft, come un principio, io ce la metto tutta per essere a favore di prodotti fatti bene, è colpa di microsoft che non riesce proprio a fare alcune cose, a favore di questo vi dico che da tempo utilizzo la piattaforma .Net e ho sempre un buona opinione di C#, di alcune funzionalità all'interno di visual studio 2008 e 2010, certo potrei un innervosirmi se vado a vedere il costo di questi tool!!

Queste pillole informatiche non vogliono essere un manuale, ne la bibbia, ne il corano (sempre per parcondicio) ma vogliono aiutare tutti coloro che come me si trovano a progettare e implementare sistemi informativi software e quanto altro, insomma per evitare quella famosissima frase:
"COL CAZZO CHE FUNZIONA!!!!"
Questa volta mi ci ero messo proprio di impegno, volevo usare entity framework!
Ne avevo letto, pensavo di averlo capito, sembrava tutto facile, spingi un pulsante qua, scegli un DB poi una tabella e UALA, il gioco è fatto. Ho iniziato il progetto, ci ho lavorato e che scopro, che come al solito è una scatola chiusa ermeticamente, e se ci vuoi mettere le mani dentro non c'è modo. La grossa difficoltà è stata quella di voler implementerare delle entità sopra a delle viste, queste viste avevano tutti i campi Not Null, e questo produceva un entity in cui tutte le colonne erano chiavi!!!

Ho cercato per giorni, e giorni una soluzione software a questo problema, ma non ho trovato soluzioni valide ovviamente per il mio progetto.

E cosi ho dovuto dirottare il lavoro fatto su un altro ORM per .NET: NHIBERNATE

Fortunatamente lo avevo utilizzato già un un altro progetto, e ad ho potuto apprezzarlo ancora meglio.
La cosa più bella che trovo in Nhibernate e di conseguenza in Hibernate, è la possibilità di adattarsi a qualsiasi situazione, e questo con la massima trasparenza. Con dei "semplici" xml di mapping, Nhibernate riesce a mappare i nostri oggetti come vogliamo, non dobbiamo perseguire delle regole di programmazione restrittive sui nostri oggetti, non dobbiamo ereditare o rifarci a classi astratte per definire le nostre entity, e le nostre entità possono essere caratterizzate da funzioni e attributi a nostro piacimento. Questo ci permette di disegnare una bussiness logic come meglio è necessario per il nostro progetto.

Per cui:

  • Programmazione a Oggetti senza limitazioni
  • .Net nativo di codice
  • Infinità di tipologie di mapping XML
  • Non c'è da compilare niente altro che il nostro progetto
  • Diverse tipologie per interagire  tra i nostri oggetti i lo strato SQL
  • LGPL
Insomma un gran bel progetto, consiglio a tutti di provarlo.