2009-04-23 16 views
7

Sono uno sviluppatore .NET di giorno, ma ho lavorato con Rails e Merb l'anno scorso per progetti miei, quindi quando si tratta di MVC e ORM, sono più abituato a loro e uso ActiveRecord e DataMapper.Unità di lavoro/gestori repository per NHibernate?

Iniziamo con ASP.NET MVC e mi piace quello che vedo in NHibernate e Fluent NHibernate, ma cerco un po 'di più su come gestire al meglio l'unità di lavoro o il modello del tipo di repository.

Mi piacerebbe qualcosa che non sia enorme per l'architettura. Ho visto alcuni progetti come S # arp Architecture, ma sembra un po 'gonfio.

Tutto quello che sto cercando è un modo semplice per gestire le connessioni e gestire il recupero/archiviazione dei dati. Una semplice guida o un'applicazione di esempio sarebbe addirittura sufficiente.

+0

Stai utilizzando un contenitore IOC? So che Castle ha qualche supporto per NHibernate tramite le estensioni. Sarebbe davvero utile sapere quali strumenti stai utilizzando perché la risposta cambierà. Inoltre, se stai tentando di supportare una singola sessione su più richieste di pagine. – Min

risposta

11

Ci sono alcuni componenti che è possibile utilizzare per una facile Unità di implementazioni di lavoro:

Come per i progetti di esempio, here è uno per Burrow. Sto usando Burrow per un progetto in questo momento e sta funzionando bene per me. Sebbene io non li usi, ci sono classi di repository che usano l'unità di gestione delle sessioni di lavoro, quindi è davvero facile andare avanti con esso. Uso anche Fluent NHibernate ed è semplice far funzionare tutto insieme.

+0

Citazione "Fabio Maulo, uno sviluppatore osceno ...", direi, è lo sviluppatore di Nhibernate :-) Buona risposta comunque. –

+0

Dalla visione del registro di commit e della mailing list, di certo non posso discuterne. In realtà l'ho digitato con un "the" inizialmente e si dovrebbe dare il dovuto credito. –

+0

Il collegamento della tana di NHibernate è rotto. –

1

Tutto ciò che voglio veramente è un modo semplice per gestire le connessioni e gestire il recupero/archiviazione dei dati.

Sì, NHibernate può essere piuttosto dettagliato. Ho studiato sia i "modelli" di Unità di Lavoro che di Deposito (sono in realtà "facciate" ma questa è un'altra storia) e abbiamo scritto implementazioni molto semplici di questi. Entrambi semplificano enormemente NHibernate, ma suggerirei di utilizzare l'implementazione dell'unità di lavoro poiché ritengo che sia generalmente più performante e più facile da usare rispetto al repository. Scaricalo e fare un tentativo:

http://code.google.com/p/nhibernate-unitofwork-example/

+0

Ciao James, grazie per l'esempio. Ho guardato il tuo codice. La tua unità di lavoro non considera LazyLoading. Cosa succede se la sessione è ancora richiesta dopo il processo di caricamento iniziale? Nel tuo caso, è smaltito da allora. –

+0

Sebastian, grazie per aver esaminato il mio codice. La mia implementazione UOW effettivamente considera il caricamento lazy ed è abbastanza compatibile. Suggerirei di mantenere aperta la sessione per tutto il tempo necessario, in quanto non vi è alcuna penalità per mantenerla aperta. Se è necessario chiudere la sessione per qualsiasi motivo, è sufficiente aprirne una nuova e il caricamento lento dovrebbe funzionare come previsto. –

2

si potrebbe anche essere interessato a Castle ActiveRecord, che implementa il pattern ActiveRecord in cima NHibernate, liberamente ispirato a ActiveRecord di Rails.

Problemi correlati