2008-09-18 16 views
17

NHibernate non è davvero adatto per il nostro ambiente a causa di tutte le dipendenze. (Castello, log4net ecc.)Alternative leggere a NHibernate

Esiste una buona alternativa leggera?

Il supporto per database basati su file semplici come Access/SQLite/VistaDB è essenziale.

Idealmente, qualcosa contenuto in un unico assembly che fa riferimento solo agli assembly .NET. Se richiede solo .NET framework 2.0 o 3.0, questo è un bonus.

risposta

2

In generale, per il back-end del database in uso con .net è necessario un provider ADO.Net.

Per MS Access (Jet), il fornitore viene fornito con .net. Per SQLite, esiste un provider ADO.Net autonomo.

Per quanto riguarda l'accesso ai dati strato di lib, se volete un po astrazione su ADO.Net:

Tutti coloro lavoro ben iniziando con framework 2.0 e superiori.

In sostanza, si scegliere (e c'è un sacco di scelte)

8

Per un ORM leggero che si comporta bene e solo richiede un unico assembly perché non provare Lightspeed da Mindscape. Non è open-source, ma la fonte è disponibile ed ha un prezzo ragionevole - il rischio con la maggior parte degli ORM che non sono ben adottati è ovviamente la qualità e il livello di supporto, e ci sono pochissimi altri ORM open source che valgono la pena nel. Spazio netto al momento.

A causa della tua avversione per le dipendenze di NHibernate, sembra che tu non abbia bisogno di un quadro di registrazione o di uno qualsiasi dei lati del progetto del castello, ad esempio IoC, Monorotaia, ecc. Hai preso in considerazione forse solo il minimo indispensabile dei requisiti NHibernate (log4net e le collezioni Iesi credo, e proxy dinamico dal progetto castello?) ed eseguire su di esse ILMerge per consolidarle in un unico assembly - potrebbe richiedere un po 'di giocherellando, ma non è troppo difficile - o in alternativa si potrebbe semplicemente tirare il codice sorgente per ciascuno di questi progetti in una build personalizzata di NHibernate che gestisci per la tua organizzazione che ritaglia le funzionalità non richieste dal tuo progetto/organizzazione - non è così difficile e delicato come sembra e ho fatto qualcosa in questo senso per un progetto in cui volevamo beneficiare di un ORM, ma necessario per ridurre le dimensioni del f distribuito iles/installatore.

Inoltre, sei forse in grado di spiegare quello che ritieni sia troppo "pesante" per una soluzione basata su Nhibernate ... nella mia esperienza è una struttura ORM ragionevolmente leggera rispetto ad alcuni.

2

alcune delle alternative:
- ActiveRecord - utilizza nhibernate.dll in background, ma la configurazione viene eseguita tramite attributi.È come la versione lite di nibernato
- Subsonic
- CoolStorage.NET - L'ho usato molto con piccoli progetti. Funziona bene con il numero di dbs

0

LINQ to SQL può essere una buona alternativa ai sistemi ORM "heave" se lo si utilizzerà correttamente.

+3

LINQ to SQL supporta solo SQL Server: il poster ha dichiarato che il supporto per i DB basati su file è fondamentale. –

+0

LINQ to SQL supporta database basato su file - Microsoft SQL Server Compact, prova: http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx – too

1

Ecco un big list di alternative, quelli mi consiglia:

  • Coolstorage
  • SOODA
  • ODX
  • Lightspeed (gratuito per 8 oggetti o meno)

Quegli 4 sono i più leggeri. Subsonic, ActiveRecord e altri sono destinati a sistemi di grandi dimensioni. Funzionano bene su sistemi più piccoli ma (almeno per ActiveRecord) hanno un enorme elenco di dipendenze e overkill per un piccolo sistema. Andrei con Lightspeed e dire che qualcosa sotto gli 8 oggetti è un piccolo sistema, e semplicemente usare NHibernate perché è largamente adottato è buono per il ridimensionamento ma a breve termine non ha senso - e avere uno strato tra l'ORM e i tuoi consumatori può funzionare intorno a questo comunque.

+0

Quel collegamento è scaduto, la nuova posizione è http://shrinkrays.net/articles/a-look-at-net-object-relational-mapper-orms.aspx –

+0

È stato aggiornato l'url –

7

aggiunta a questa lista, si potrebbe anche dare un'occhiata al Dapper (scritto per e utilizzato da StackOverflow stessa).

+0

Libreria molto bella: la semplicità è una forma d'arte perduta! –

0

Se non hai bisogno di ORM pienamente funzionale e hai solo bisogno di un livello di dati indipendente da database veloce su ADO.NET prova open-source NI.Data library (V2). E 'molto leggero (solo una piccola assemblea, altre dipendenze), fornisce tutti gli standard delle infrastrutture strato di dati:

  • interrogazione astrazione e parser per la sua rappresentazione di stringa denominata 'relex'(sembra che: "i libri (punteggio = 5) [titolo, id]" - molto buona alternativa a LINQ to SQL e le espressioni possono essere composti al volo)
  • concetto di 'vista' per incapsulare complesse DB-sintassi SQL dipendente interroga
  • dati innesca
  • autorizzazioni livello dati per selezionare/aggiornare/eliminare query
  • dal b ox supporta i provider MS SQL, SQLite, MySQL, Odbc/OleDb (MS Access). Il supporto per altri database SQL potrebbe essere facilmente aggiunto.

La sua componente principale (DALC) inizializzato con una sola riga di codice:

var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr); 

questo è tutto. Se è necessario il supporto per il runtime .NET 2.0, è possibile provare a compilare la versione V2 più recente con runtime 2.0 o utilizzare la versione precedente legacy (NI.Data.Dalc, V1).