Il mio team sta avviando un nuovo progetto in ASP.NET MVC e ci stiamo chiedendo quale tecnologia utilizzare per l'accesso ai dati. Come decidi quale è il migliore? Quale ha le migliori prestazioni? Quale è più facile da usare e da mantenere?NHibernate, Entity Framework, record attivi o linq2sql
risposta
Se .NET 4.0, scegliere tra NHibernate o Entity Framework. NHibernate è più estensibile e generalmente più ricco di funzionalità. Entity Framework funziona meglio per le aziende che preferiscono avere ciò che fornisce Microsoft. Sono entrambe opzioni valide e nessuno ha ancora pubblicato un colpo oggettivo significativo per confronto tra colpi. Questo è uno dei migliori confronti non oggettivi:
http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx
Se .NET 3.5 o precedente, scegliere NHibernate.
Choosing Database and ORM for a .NET project
Which ORM tool should I use for .Net development
Easiest to learn and use .NET ORM framework?
Some suggestions on which .NET ORM to look at learning
https://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net
https://stackoverflow.com/questions/249550/what-orm-frameworks-for-net-do-you-like-best
Best free ORM tools to use with .NET 2.0/3.5
https://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend
Dopo 4 settembre 2009:
O/RM Choice (not reliant on linq)
https://stackoverflow.com/questions/1469761/nhibernate-vs-entity-framework-vs-something-better
0.123.516,41 milaHow to choose an object relational mapping for .net
Detto questo, le cose cambiano. Ora che NHibernate supporta Linq, penso che NHibernate sia la scelta chiara nella maggior parte delle situazioni. Per una più lunga e abbastanza fino all'analisi data, sentitevi liberi di leggere questo:
Questa domanda ha acquisito alcune risposte sopra la media, anche se è un duplicato: http://stackoverflow.com/questions/5101974/comparison-entity -framework –
Personalmente, adoro entrambi i framework, ma Entity Framework ha un grande vantaggio rispetto a NHibernate: è molto più facile lavorare. Soprattutto per le persone nuove a NHibernate, la fase di avvio può essere piuttosto difficile. EF fa molto meglio. Tuttavia, in alcune aree NHibernate è superiore, ad es. quando si tratta di estendere la struttura, NHibernate offre più opzioni. –
Dai un'occhiata a TinyDA https://github.com/kumait/TinyDA – Kumait
La mia preferenza è LLBLGenPro - un ORM davvero eccezionale che funziona esattamente come ci si aspetterebbe. Non è basato sulla configurazione come entità framework o nibernate, genera il tuo DAL basato sul tuo db (con molta flessibilità attraverso i loro strumenti).
LINQ2SQL è probobly più facile da usare. Entity Framework offre una grande estensibilità e la versione futura conterrà molti miglioramenti.
Una regola chiave per le prestazioni: codice di scrittura facile da gestire, leggere e distribuire; se deve rallentare - ottimizzare!
Penso che la differenza di prestazioni tra gli ORM oggi sia evidente, quindi dovresti scegliere quella che ti sembra più comoda ed efficace con cui lavorare.
Nah;) https://github.com/FransBouma/LinqToSQL2 –
Entity Framework ha una migliore mappatura delle relazioni rispetto a linq2sql (ad esempio, ha più relazioni multiple).
Non ho usato gli altri due, ma ho usato Hibernate in Java ed è stato piuttosto semplice da usare.
Potrebbe utilizzare PLINQO se si desidera supporto alla relazione molti-a-molti e si utilizza LINQ-2-SQL. http://www.codesmithtools.com/product/frameworks –
Questo blog post confronta varie tecnologie di dati per .NET in vari aspetti (prestazioni, manutenibilità, testabilità ecc.). Potrebbe essere di aiuto al tuo processo decisionale.
Michael, SUbSonic non è affatto decente. Non capisco davvero perché la gente ci provi. Solo il suo assemblaggio da 300 Kb ad es.4 Mb @ OpenAccess - deve essere chiaro che è solo un piccolo giocattolo. E dimenticati di LINQ - scommetto che il suo supporto LINQ non sarebbe mai paragonabile ad altri. –
Siamo spiacenti, "SubSonic" e "Proprio suo" => "Confronta";) –
Sono di fronte allo stesso dilemma. LINQ2SQL offre maggiore flessibilità e controllo immediato sull'accesso ai dati, tuttavia Entity Framework è la soluzione "enterprise". Attualmente sto provando questo - SubSonic e sembra molto promettente.
Per confrontare ORM - dare uno sguardo su http://ormbattle.net/
Quel sito ha già una pessima reputazione. :( –
D'accordo, devi vedere quale società ORM supporta questo sito! – Codezy
Ragazzi, visitare le FAQ e Blog @ ORMBattle, spiegano molto Michael, questo sito ha cattiva reputazione _per te_ - Sospetto perché SubSonic tu promuovi qui mostra la sua vera faccia. –
La mia scelta è Devart LinqConnect (http: // www. devart.com/linqconnect/). Questo prodotto è facile da usare come LINQ to SQL (e persino è compatibile con esso) e allo stesso tempo fornisce funzionalità ORM avanzate come Entity Framework. Io preferisco la loro Visual Designer e le loro caratteristiche ORM:
- tipi complessi
- caricamento pigro
- PLINQ
ho usato Entity Framework (codice prima) e NHibernate da qualche tempo e preferisco di gran lunga il ibernato, particolarmente fluente. Sembra che mi dia molta più flessibilità nel modo in cui mappo i miei oggetti al database. Inoltre, offre un controllo molto maggiore sul caricamento lento e sulle azioni a cascata sugli oggetti.
Il record attivo è più uno schema di progettazione che una tecnologia [http://en.wikipedia.org/wiki/Active_record_pattern] a meno che non ti riferisci a qualcosa di specifico come Castle ActiveRecord [http://www.castleproject.org/ ActiveRecord/index.html]? –
ce l'ha, ben ya, volevo dire il record attivo subsonico – Omu
Per F #, SqlProvider: https://github.com/fsprojects/SQLProvider –