2010-01-21 7 views
5

Questa è probabilmente una soluzione lunga.C'è un killer NHibernate là fuori?

Nel mondo .NET, qualcuno ha trovato un ORM (commerciale o aperto) che ha la flessibilità di NHibernate per supportare il design basato sul dominio con un buon supporto Linq? Linq to sql è morto, Entity Framework non supporta ancora il POCO, il carico pigro o lo sviluppo di primo oggetto molto bene, e nessuno dei vecchi sistemi di standby come LLBLGen sembra sia.

Qualcuno trova qualcosa di nuovo ed eccitante nel mercato ORM?

Grazie!

+7

Chi dice che LINQ to SQL è morto? Microsoft ha rilasciato una patch per farlo smettere improvvisamente di funzionare? –

+2

Inoltre, che dire di NHibernate ti sta cercando delle alternative? Se sono i mapping XML, dai un'occhiata a Fluent NHibernate. Se non ti interessa neanche questo, dai un'occhiata a Castle ActiveRecord, che è basato su NHibernate, ma rende la mappatura ancora più semplice e astrae anche parte della gestione della sessione. –

+0

@Kyralessa: LinqToSql non è morto, ma Microsoft sta mettendo il muscolo dietro Entity Framework (hai contato il numero di sessioni di PDC 2009 su EF rispetto a LinqToSql?). Il fornitore Linq di NHibernate è un work in progress e sembra essere importante per i fregas. –

risposta

4

Vedere ORMBattle.NET - non risponderà esattamente alla tua domanda (btw, non ammetto che sia possibile), ma ci sono alcune informazioni sulla qualità del supporto LINQ.

Nota (o dichiarazione di non responsabilità): sono una delle persone legate alla creazione di ORMBattle.NET, nonché a uno degli autori di DataObjects.Net.

+2

Grazie per il disclaimer, lo apprezzo molto. Informazioni aggiuntive relative alla domanda originale: LLBLGen ha chiesto di non essere elencato su ORMBattle.NET. –

+1

Non avevo chiaramente intenzione di nascondere questo fatto. Quindi è davvero meglio semplicemente ripeterlo ovunque, dove questo non è assolutamente ovvio. –

+1

Si prega di aggiornare il grafico! È obsoleto. – hazzik

1

No, non ne conosco. Poiché NHibernate è popolare e molto bravo in quello che fa, e EF probabilmente raccoglierà la maggior parte del resto (in particolare gli sviluppatori che non vogliono allontanarsi dai framework forniti da Microsoft), la barriera all'ingresso per un nuovo giocatore è molto alta. Un altro ORM dovrebbe aggiungere qualcosa di significativo oltre a quello che offre attualmente NHibernate al fine di ottenere un ragionevole livello di interesse.

Se ci fosse un progetto open source che volesse fornire un migliore supporto Linq in un ORM, a mio parere avrebbe un maggiore successo contribuendo a NHibernate Linq piuttosto che tentare di costruire il proprio framework da zero.

2

Di quale versione di .NET Framework si sta parlando? 3.5? 4.0?

Ci sono molti ORM là fuori e alcuni di quelli commerciali possono infatti soddisfare le vostre esigenze (o lavorare su nuove versioni che soddisfano le vostre esigenze). Competere contro NHibernate e Entity Framework da una prospettiva commerciale è piuttosto scoraggiante. Microsoft ha reso molto più difficile del necessario scrivere un provider Linq, motivo per cui così pochi ORM ne hanno uno. Scrivere un ORM orientato al design orientato al dominio che supporti più fornitori di database è anche una salita piuttosto ripida.

NHibernate ha sicuramente tutto lo slancio in questo momento, ma ciò non significa che sia invincibile. È difficile competere con il software open source gratuito & che ha un inizio di anno pluriennale, anche per un'azienda con le risorse finanziarie di Microsoft.

Penso che potresti aver bisogno di essere paziente. Il fornitore Linq di NHibernate sta migliorando e gli altri fornitori di ORM stanno lavorando sodo per migliorare le loro offerte. Le cose potrebbero cambiare in modo significativo nei prossimi due anni circa.

1

Non lo chiamerei "killer NHibernate", ma SubSonic funziona bene. È semplice da usare, ti consente di scegliere tra l'utilizzo del pattern Record attivo e il pattern Repository. Supporta POCO, ti consente di utilizzare lo sviluppo di oggetti e l'impostazione di caricamento lento è abbastanza semplice.

0

CQRS potrebbe essere considerato un killer NHibernate. La premessa di base è che gli oggetti del dominio non vengono utilizzati per supportare il modello di lettura e le query dell'applicazione. In questo modo, puoi iniziare a utilizzare qualcosa di più simile a un negozio di documenti per conservare il tuo aggregato o persino utilizzare il sourcing di eventi. Per aggiornare il tuo modello di lettura, devi ascoltare gli eventi pubblicati dal tuo aggregato in modo che possa aggiornarsi di conseguenza. Utilizzando questo stile architettonico siamo stati in grado di eliminare la nostra dipendenza da NHibernate.Ora, se decidiamo di utilizzare un RDBMS, è a causa dei punti di forza del database piuttosto che della scelta predefinita.

+0

Sembra ancora che tu abbia bisogno di NHibernate o di un altro ORM per i contenuti di base CRUD. Per la segnalazione avanzata sono d'accordo che non è proprio lo strumento migliore ... ma si potrebbe discutere di Entity Framework – fregas

+0

NHibernate diventa overkill a quel punto. Ci sono un sacco di "mini ORM" che stanno spuntando - anche uno open source dai ragazzi di Stack Exchange. –

Problemi correlati