Posts
163
Comments
179
Trackbacks
5
NHibernate: utilizzare database multipli

E' ufficiale sono entrato nel tunnel. Le prime volte che ho sentito parlare di NHibernate l'ho snobbato senza mezzi termini. Piano piano però ho iniziato a seguire i post e negli ultimi giorni mi sono visto i webcast di  Marco De Sanctis e Giancarlo Sudano (l'ultimo quello di oggi). La loro passione mi ha contagiato e ora eccomi qui a scrivere i miei primi post.

Ma iniziamo con calma. Come forse tutti quelli che si sono affacciati al mondo NHibernate, la prima cosa che mi sono detto è stata quella di provare a verificare se tutte le esigenze (in termini di persistenza) potessero essere soddisfatte da NHibernate. In alcuni casi la necessità di utilizzare più database, per me è fondamentale.
Il metodo che ho trovato mi sembra abbastanza semplice da implementare. La prima cosa da fare è quella di definire i nostri file XML di configurazione. Questi file prenderanno il posto del file app.config o del web.config. Il frammento di codice seguente mostra come definire i nostri file di configurazione:

<?xml version="1.0"?> <configuration> <configSections> <section name="hibernate" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate" /> </configSections> <hibernate xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider"> NHibernate.Connection.DriverConnectionProvider </property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="default_schema">dbo</property> <property name="connection.connection_string">CONNECTION_STRING1</property> <property name="show_sql">true</property> <mapping assembly="Alex.TestNH.DomainModel"/> </session-factory> </hibernate> </configuration>


Come si può notare tutte le impostazioni per l'accesso al database sono racchiuse nel tag <session-factory>. L'altra cosa che ho inserito, ma non strettamente necessaria ai fini dell'utilizzo di database multipli, è il mapping dell'assembly fatto direttamente da file di configurazione.

A questo punto è sufficiente caricare i nostri file di configurazione e creare le nostre factory. Nel frammento di codice seguente vengono create due factory utilizzando due file di configurazione:

' Creo la prima factory cfg = New Configuration() cfg.Configure(Application.StartupPath & "\config\db1.xml") factoryDB1 = cfg.BuildSessionFactory() cfg = Nothing ' Creo la seconda factory ' Ricreo l'oggetto configuration per evitare errori di mapping duplicati cfg = New Configuration() cfg.Configure(Application.StartupPath & "\config\db2.xml") factoryDB2 = cfg.BuildSessionFactory() cfg = Nothing


Tutto qui. Adesso possiamo usare le nostre due factory e operare come al solito.
Alla prossima!

posted on mercoledì 24 gennaio 2007 11:09 Print
Comments
Gravatar
# re: NHibernate: utilizzare database multipli
Alessandro Sorcinelli
31/01/2007 18:29
Ti ho risposto in privato, ma per completezza scrivo anche qui.
Non ho mai provato NHibernate 1.0.3.0, sono passato direttamente alla versione 1.2.0 Beta 3. Sicuramente questo tag

<hibernate xmlns="urn:nhibernate-configuration-2.2">

è da modificare

<hibernate xmlns="urn:nhibernate-configuration-2.0">

Non so se questo abbia qualche tipo di influenza nel problema da te riportato.

Ciao, Alessandro
Gravatar
# re: NHibernate: utilizzare database multipli
Fabio Maulo
16/08/2007 00:46
Il tag corretto é nhibernate-configuration-2.2 giá da svariato tempo.
Sicuramente é il corretto a partire dalla 1.2.0GA ma era stato modificato anche prima.

Se siete interessati c'é una novitá in giro e il primo post tratta propio della configurazione
http://groups.google.it/group/nh-it

Ciao.
Fabio.
Comments have been closed on this topic.
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS