View Full Version : [C#] NHibernate
tomminno
07-10-2008, 12:15
Esistono in giro dei tools per configurare NHibernate senza dover per forza scrivere a mano tutte le classi e le mappature?
Esistono in giro dei tools per configurare NHibernate senza dover per forza scrivere a mano tutte le classi e le mappature?
Ciao Tomminno.
Se puoi, prova a valutare LINQ to SQL.
Fra l'altro il tool per la configurazione e' gia' integrato. Ce ne sono 2, su linea di comando o via designer.
Se non puoi peccato. Io non riuscirei piu' a farne a meno.
tomminno
08-10-2008, 07:39
Ciao Tomminno.
Se puoi, prova a valutare LINQ to SQL.
Fra l'altro il tool per la configurazione e' gia' integrato. Ce ne sono 2, su linea di comando o via designer.
Se non puoi peccato. Io non riuscirei piu' a farne a meno.
LINQ però non è un vero e proprio ORM.
Il problema è che LINQ ha un designer per le classi che al momento è l'unico che ho trovato che mi fa una mappatura quasi minimale di tabelle, viste e stored.
Il problema è che è tutto nascosto, non ho il codice delle classi ma solo il designer (e la partial class).
Rimangono gli XML di mappatura di NHibernate che mi devo scrivere ugualmente a mano.
Infine LINQ funziona solo con SQLServer, gli altri binding non sono ancora maturi per essere usati.
LINQ però non è un vero e proprio ORM.
Il problema è che LINQ ha un designer per le classi che al momento è l'unico che ho trovato che mi fa una mappatura quasi minimale di tabelle, viste e stored.
Il problema è che è tutto nascosto, non ho il codice delle classi ma solo il designer (e la partial class).
Rimangono gli XML di mappatura di NHibernate che mi devo scrivere ugualmente a mano.
Infine LINQ funziona solo con SQLServer, gli altri binding non sono ancora maturi per essere usati.
Anche il file princpiale della definizione del database in LINQ non e' nascosto ed e' un XML che se vuoi puoi editare a mano.E per fortuna direi. Quando si sviluppa in 2 o piu' con un Source Control sarebbe un bagno di sangue.
A partire da questo, come fare per avere anche i file delle classi effettivamente non lo so, ma penso che sia possibile, forse usando la linea di comando SqlMetal
Per quanto riguarda i database e' effettivamente ufficialmente supportato solo SQL Server, ma come dicevi ci sono esempi di "Linq To Oracle" e "Linq to Postgres" provider. Penso che a breve verranno rilasciati.
C'e' ancora un'opzione, ovvero Linq to Dataset.
In pratica l'ORM verrebbe mappato sui dataset, e quindi sulle DataTable. Essendo che i dataset possono essere riempiti a partire anche da una semplice connessione ODBC (o OleDb), allora si potrebbe usare per praticamente qualsiasi database.
Non l'ho mai usato pero'.
tomminno
08-10-2008, 09:50
Anche il file princpiale della definizione del database in LINQ non e' nascosto ed e' un XML che se vuoi puoi editare a mano.E per fortuna direi. Quando si sviluppa in 2 o piu' con un Source Control sarebbe un bagno di sangue.
A partire da questo, come fare per avere anche i file delle classi effettivamente non lo so, ma penso che sia possibile, forse usando la linea di comando SqlMetal
Effettivamente il codice è presente nel file designer.cs del file dbml, il problema è che è per Linq, quindi non riutilizzabile per NHibernate.
Mi sa che me lo devo scrivere un tool che mappa le entità del db in POCO, non ne ho trovato uno funzionante.
C'e' ancora un'opzione, ovvero Linq to Dataset.
In pratica l'ORM verrebbe mappato sui dataset, e quindi sulle DataTable. Essendo che i dataset possono essere riempiti a partire anche da una semplice connessione ODBC (o OleDb), allora si potrebbe usare per praticamente qualsiasi database.
Non l'ho mai usato pero'.
Noooooooooo, i dataset no. Sono l'antipattern per eccellenza. L'antitesi della OOP.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.