Entrambe sono ottime soluzioni, anche se personalmente penso che NHibernate sia migliore per un database ereditato. Qui è una buona caratteristica-saggio confronto -
http://www.dennisdoomen.net/2013/03/entity-framework-56-vs-nhibernate-3.html
Ci sono alcune cose che sono chiaramente meglio in NHibernate, come il supporto di memorizzazione nella cache di secondo livello. La documentazione è probabilmente un po 'più rada di EF, ma se sei disposto a passare attraverso la curva di apprendimento, NHibernate ti dà molta più energia.
FluentNHibernate è ideale per la mappatura digitata delle classi alle tabelle sottostanti, ma ci sono alcuni punti in cui è necessario ripristinare i mapping XML. C'è comunque una nuova API concorrente da NHibernate stessa, e non l'ho ancora verificata (il blog post sopra lo menziona).
Se si desidera fare affidamento sul supporto degli utensili VS, EF è migliore. Tuttavia a volte ci sarà qualche magia (per esempio EF può usare la riflessione per popolare anche le proprietà private di un oggetto, NHibernate non lo fa, questo è un punto di forza o di debolezza a seconda di come lo vedi). EF funziona anche bene con altri framework forniti da Microsoft (ad esempio, servizi RIA). Mi piacciono anche le migrazioni EF-auto (quando usi il codice prima).
Se si desidera più potenza nelle proprie mani e si vuole essere in grado di mettere a punto come funzionano le cose con una chiara separazione delle preoccupazioni (ORM fa solo quello che dovrebbe fare l'ORM), NH sembra essere migliore. Tuttavia, è un po 'irritante rendere tutte le proprietà virtuali per NH essere in grado di accedervi.
Ho usato entrambi e può diventare un po 'goffo in entrambi i modi per generare lo sql desiderato; in quei casi del 5-10%, scendi di un altro livello e usa un micro-ormo come Dapper, Massive o Petapoco.
EDIT: troppo
NHibernate possibile popolare proprietà private, apparentemente, quindi questo era solo l'ignoranza da parte mia.
fonte
2013-08-27 19:18:45
Quanto è grande un progetto siamo parlando? Qualche centinaia di domande, poche migliaia? Stai ottimizzando preventivamente? Niente sarà veloce come una query diretta o qualcosa di simile a Dapper.NET ma potrebbe comunque essere usato in modo ragionevole a seconda di come lo si codifica. –
possibile duplicato di [Entity Framework 4 vs NHibernate] (http://stackoverflow.com/questions/1639043/entity-framework-4-vs-nhibernate) – Paddy
Dai uno sguardo a quanto segue: http://stackoverflow.com/ domande/699792/is-orm-slow-it-matter –