2012-01-17 16 views
7

Attualmente abbiamo 2 database che verranno utilizzati. Uno proviene da un prodotto preesistente e quindi non ne abbiamo il controllo. l'altro è uno di cui abbiamo il pieno controllo.Passaggio da Entity Framework a NHibernate

Attualmente utilizziamo l'EF4 CTP in quanto abbiamo bisogno di funzionalità spaziali ma ovviamente questo non può essere utilizzato nel codice prodotto e la recente versione di EF non è spaziale come questo è per una versione successiva di .Net Framework e quindi la decisione si sta facendo la strada da seguire e un suggerimento è quello di passare a NHibernate e usare l'addon spaziale.

Quindi la prima domanda riguarda la curva di apprendimento e lo spostamento tra gli strumenti. Ai miei occhi sembra che l'NHibernate sia più visibile su quello che sta facendo, EF nasconde molto di quello che fa nel tipico stile MS, sarebbe giusto?

Quindi sto pensando che la strada da seguire è utilizzare un diagramma di classe per descrivere il database di cui abbiamo il controllo. Quindi creeremo le pupe POCO e quindi sarà necessario creare file di mapping. È davvero così semplice? Questi file di mappatura, abbiamo bisogno di scriverli manualmente o abbiamo uno strumento per creare dalle classi POCO?

La prossima domanda riguarda il database preesistente e cosa facciamo qui. EF semplifica l'importazione del database e crea le classi ed è così semplice in NHibernate?

Nel caso in cui colpisce le risposte

Il database abbiamo il controllo di utilizza un database MS SQL. Quello che non facciamo è Oracle e usiamo il codice ODAC Entity Framework da Oracle.

La ringrazio molto

risposta

3

Per un database esistente, mi consiglia di utilizzare Fluent NHibernate per la mappatura. V'è un buon esempio di questo nel progetto Sharp Architecture

ci sono tools che fare entrambe le cose generazione POCO e Fluent Mapping, non ho provato nessuno di loro, ma ho letto su di loro.

+4

Si consiglia di utilizzare solo NHibernate v3.2 perché ha incorporato il supporto per la creazione dei mapping nel codice. A meno che tu non sappia che hai bisogno di alcune funzionalità che solo Fluent NHibernate ha. Recentemente mi sono trasferito da Fluent NHibernate a NHibernate normale e anche se la sintassi di mappatura non è così bella e la documentazione è carente, non vedo alcun problema nell'utilizzarlo al posto di Fluent NHibernate. –

+0

Fantastico, non sapevo che l'NHibernate l'avesse ora. –