2009-04-08 14 views
5

Sto lavorando in un negozio Microsoft .NET in cui è possibile utilizzare NHibernate o ADO.NET EF. Quale guida dovremmo usare quando dovreste scegliere l'una rispetto all'altra?ADO.NET Entity Framework e NHibernate: quando utilizzare uno sull'altro

Ad esempio, sembra che quando si scrive un'applicazione Silverlight, EF -to-> ADO.NET Data Services -to-> Silverlight offra un aumento di produttività e fornisca un'API di servizio REST senza sforzi aggiuntivi.

Quali altre cose dovrebbero aiutare a guidare l'utente in base all'app?

UPDATE (sulla base di un commento): Questo è un po 'utile What differentiates Nhibernate from other ORM’s? gli altri vanno via in tangenti strane (come SubSonic) e non si confronta direttamente i due. Immagino di essere specificamente alla ricerca di persone che usano entrambi e decidono su un progetto per progetto quale useranno.

+0

Questo è un duplicato molte volte. Basta guardare le domande correlate sul lato destro di questa pagina. –

risposta

6

In breve, EF non ha supporto per Ignoranza persistenza fuori dalla scatola. Quando ho provato per la prima volta a costruire una soluzione con EF l'anno scorso, ero un po 'seccato che non potessi avere POCOs nella tua applicazione. Volevo un grado più alto di disaccoppiamento con il mio modello, così ho finito per passare a NHibernate. Da allora, qualcuno ha scritto un adattatore EF POCO. http://code.msdn.microsoft.com/EFPocoAdapter - tuttavia è in realtà solo un codificatore che genera un livello adattatore per mappare gli oggetti.

Per qualche motivo, la mia app ha funzionato un po 'più veloce anche sotto NHibernate. Prendilo con un pizzico di sale perché ero nuovo nella configurazione di entrambe le soluzioni.

+0

L'ignoranza di PErsistence sembra essere pianificata per EF v2.0 che dovrebbe essere fornito con .NET 4.0/VS 2010, all'inizio del 2010 –

+0

Grazie per le informazioni. È bello sentire che l'ignoranza della persistenza sta arrivando nella v2. Daremo un'occhiata all'adattatore, non l'avevo visto prima. Ma nei prossimi 18 mesi penso che starò principalmente con NH. Ho già imparato a scrivere quei file di darn config;) – BuddyJoe

+0

... e ora dovrai disimparare di nuovo il mapping, poiché tutti quelli che sono "cool" ora lo fanno fluentemente :) http://fluentnhibernate.org/ – HenningK

2

Probabilmente eviterei del tutto il framework entità per ora. C'è lo vote of no confidence che è stato dato il lavoro di famiglia, per non parlare che non è maturo come quello di NHibernate.

Detto questo, continuerei a valutare il framework dell'entità in quanto sono sicuro che sarà migliorato nel tempo.

+0

+1 aveva visto il "voto di no conf" e il post sul blog sulla funzionalità mancante o mancante. Ma il tuo diritto sul miglioramento. Microsoft di solito ottiene roba giusta al terzo tentativo. – BuddyJoe

4

Microsoft ha recentemente iniziato a sviluppare una nuova soluzione, denominata .NET Ria Services (per ora), che sarà "ORM indipendente" per ottenere dati da e verso Silverlight da un livello di logica aziendale che vive sul server.

Hanno pubblicamente menzionato (anche su diapositive a MIX, anche) che l'NH sarà supportato qui.

Se stai cercando una soluzione con il maggior sostegno della community, NHibernate è sicuramente la risposta. Ammetto che ha una curva di apprendimento ripida, ma nella mia esperienza ne vale sicuramente la pena. Basta fare una ricerca comparativa per "entità framework" e "nhibernate", e vedrai cosa intendo. La maggior parte delle cose di EF saranno "pressate", mentre le robe di NHibernate saranno in realtà dettagli tecnici e goffi. E domande. Risposta.

Tuttavia, come altri utenti hanno menzionato, sono certo che Entity Framework migliorerà nel tempo. Per ora però, credo che stiano cercando di risolvere troppi problemi con un unico set di strumenti. NHibernate fa solo una cosa, ma lo fa eccezionalmente bene.

C'è anche il problema del design dell'applicazione qui. EF sembra essere (nella sua attuale incarnazione) costruito per fornire un database ad un'applicazione C#. NHibernate va dall'altra parte e rende più semplice ottenere un modello di oggetto persistente.

+0

+1 buoni pensieri. Non devi vendermi su NHibernate. Lo sto scavando da circa 3 mesi. Lo trovo molto più personalizzabile e modulare di EF. Il modo NH di farlo parla a me. LINQ con EF si sente ancora un po 'straniero. – BuddyJoe

+1

Si leggerà sui servizi RIA. – BuddyJoe

Problemi correlati