2009-02-19 5 views
8

Stiamo cercando nel usando un ORM e volevo alcune opinioni/i confrontiCosa ORM to Run: Telerik Open Access VS Subsonic VS LINQ to SQL VS Active Record

I criteri di base che abbiamo per un ORM è: Facile utilizzare/configure (breve curva di apprendimento), flessibile, la capacità di astrarre via, facile da mantenere

Ecco un elenco di ciò ORM che stiamo guardando e ciò che le nostre impressioni iniziali sono

  1. Aperto Access - sembra davvero facile per cose semplici, ma non sembra t o hanno un sacco di flessibilità, il costo non è un problema che già possediamo è
  2. Ling a SQL - sembra molto semplice da usare e configurare, ma manca alcune funzionalità
  3. Active Record - NHibernate reso semplice
  4. SubSonic - sembra molto ricco di funzionalità, ma non ho davvero giocato con molto

ecco i ORM che abbiamo guardato e ha escluso

  1. Entity è ancora in beta
  2. NHibernate ha molto a gran parte una curva di apprendimento (noi non abbiamo 3 settimane a delicato per impararla)

risposta

4

Attualmente utilizziamo SubSonic (2.0.3) ed è stato un vero salvavita. Non posso sottolineare abbastanza quanto sia fantastico. TUTTAVIA, ora stiamo cercando di passare da esso per vari motivi (probabilmente a NHibernate o Entity). Qui sono i miei pro ei contro di esso:

Pro:

  • Molto semplice da installare ed usare.
  • sacco di ottimi & utili, strumenti e funzioni
  • Utilizza la filosofia "convenzione sulla configurazione", in modo molto poco di configurazione. "Funziona". (Fino a quando si fanno le cose nel modo in cui vuole ... :))

Contro:

  • la struttura del database è molto strettamente accoppiato al vostro progetto dominio. Apporta una modifica al tuo DB e devi modificare la progettazione del codice/dominio.
  • Per impostazione predefinita, SubSonic utilizza il pattern ActiveRecord per l'accesso a tutti i dati anziché il pattern Repository, il che rende più difficile "estrapolarlo". (Anche se credo con la versione 3.0 che è possibile sostituire i modelli di ActiveRecord predefiniti per utilizzare il modello di repository).
  • Un sacco di voci pessimistiche che girano attorno al futuro di SubSonic. Ma le voci sono solo queste: voci.
3

Per tutto il abbinato ne vale la pena:

Se non si dispone di 3 settimane ora per imparare il tuo ORM di scelta (a seconda di quale si sceglie), potrebbe essere necessario trovare 3 settimane a le arn it più tardi quando non mappa qualcosa esattamente come pensavi che sarebbe.

Se si dispone di un modello moderatamente complicato, l'ORM non è banale. Avrai bisogno di sapere come funziona il tuo ORM in modo che tu possa dire di mappare le cose nel modo desiderato.

Quale è tutto un altro modo di dire "Conosci i tuoi strumenti", naturalmente. :)

+0

Questo è il motivo per cui uno dei requisiti è la capacità di astrarlo, che perché qualcosa non funziona correttamente possiamo codificarlo da soli. –

1

La maggior parte delle persone avrà un'esperienza infausta con uno o due di questi, ma pochi avranno un'esposizione a tutti. Raccomando uno sforzo proof-of-concept con ciascuno dei tuoi preferiti. Prendi ognuno di essi, spendendo di di ore per strumento ORM (n = per quanto tempo tu decida è ragionevole.) Non devi implementare l'intero modello di oggetto, un sottoinsieme funzionale farà .

Quando hai finito, avrai lavorato attraverso l'installazione e l'utilizzo di tutti loro. Puoi quindi scrivere un post-mortem e la squadra può decidere quale ha il miglior rapporto dolore-caratteristica.

0

Sono molto d'accordo con BryCoBat (upvoted). Volevo anche aggiungere che se possiedi già l'Open Access, la società probabilmente ha persone internamente che sono già molto a suo agio con esso, inclusi esempi di codice che guardi nel tuo dominio per compiti banali e non banali. In altre parole: usa quello che sai.

+0

abbiamo accesso aperto perché utilizziamo i controlli rad e abbiamo ottenuto la suite completa di Telerik –

6

Direi che dovresti dare un'occhiata a DataObjects.NET (http://www.x-tensive.com). È ricco di funzionalità e abbastanza facile da usare. Tuttavia, si lega in modo assoluto al modello a oggetti, in quanto decide quale dovrebbe essere la struttura del database in base al modello del tuo oggetto. Detto questo, se si vuole essere in grado di ignorare l'esistenza del database, è abbastanza bello. L'abbiamo usato per anni e abbiamo avuto un grande successo.

1

Utilizzare i modelli T4 per creare il proprio. Esistono diversi modelli stabiliti disponibili su Internet, in particolare per i modelli T4. La conoscenza di T4 consentirà inoltre di creare script per gli elementi che potrebbero avere un ambito più ampio delle macro, ma un ambito più piccolo rispetto alla scrittura di un'app personalizzata per generare lo script necessario. Spero che questo aiuti!

0

Se non si utilizzano i controlli Telerik, LINQ to SQL dovrebbe essere quello da selezionare per l'apprendimento rapido: esiste una quantità enorme di tutorial, video e libri diversi nel Web.