Come qualcuno che è appena passato da LINQ to SQL a (Fluente) NHibernate, ecco alcune cose che ho notato.
LINQ - SQL voluto così tanto tempo per capire come fare l'equivalente di un join-sottoclasse. Dopo molte modifiche, ho letto da qualche parte che non è possibile. Può mappare l'ereditarietà solo se TUTTE le colonne si trovano nella stessa tabella. Questo è bello se ci sono poche colonne, ma nel mio caso ci sono tonnellate e le sottoclassi sono genitori di altre sottoclassi e così via. Perché dovrei metterli tutti in una tabella per il mio ORM?
NHibernate per esperienza è stata robusta (a volte troppo per i piccoli progetti veloci) e anche se familiarità con esso attraverso piccoli progetti, ho sentito che potrebbe essere troppo e sono andato il percorso di LINQ - SQL quando ho potuto generare un file DBML e andare avanti in pochi minuti.
NHibernate fluente. Prende il meglio di entrambi i mondi (nel mio caso). Posso mappare il modo in cui voglio e avere il mio database come voglio e non dover scendere a compromessi nel mio dominio o nei modelli di dati. Anche una parola: Automapping ... ciliegina sulla torta.
avrei dovuto andare con un altro ORM una volta ho trovato limitazioni e ha colpito un paio di dossi stradali con LINQ - SQL, ma Fluent NHibernate fatto questa scelta facile, e io non credo che sarò lascialo a meno che qualcosa non ritorni a fare il lavoro ancora meglio.
Quindi, come ha detto Rob Scott, la domanda è: come stai astringendo il tuo dominio => modello di dati? E stai iniziando con un dominio o un database? Quanto sono complesse le relazioni? Se possiedi un'eredità, direi semplicemente di andare con un quadro ORM ricco e risparmiarti il dolore.
Fluente NHibernate ha la documentazione migliore che abbia mai trovato e ci sono così tanto supporto, note, blog e risorse che è auto-odio fare qualsiasi cosa in meno ... IMO! Sono stato attivo e funzionante in meno di 24 ore.
Oh e se siete nuovi a NHibernate, prendete il libro NHibernate in Action per aiutare a ingrassare le ruote anche se c'è molto aiuto anche per quel quadro.
la migliore indicazione che uno strumento non funziona è quando si deve lavorare lo strumento ... LINQ - SQL ero la personalizzazione, la lettura di libri bianchi, ogni sorta di follia e si è rifiutato di generare query appropriati, proprio quando ero tentato di modificare il mio tavolo e dominio, ho detto lasciami fare un giro a Fluent, e sono felice di averlo fatto.
Buona fortuna a te .. Ci scusiamo per la lunga risposta; questo è tutto negli ultimi cinque giorni, quindi credo di essere ancora coinvolto :-)
C'è anche il subsonico 3 con i modelli di mvc. –
Non restituire un oggetto IQueryable rende Linq-to-SQL un'API fluente? – Nick