NHibernate con Oracle/ODBC

venerdì 20 febbraio 2009 - 10.59

pigi78 Profilo | Newbie

Salve a tutti.
So che per questi problemi forse sarebbe più corretto usare il forum di NHibernate, però prima volevo provare qui per evitare di registrarmi in 3000 forum.

Il mio problema è il seguente: vorrei configurare NHibernate per lavorare con Oracle 10g.

Sul PC ho già installato ODT .NET (se lavoro con ADO riesco ad accedere tranquillamente ad Oracle).

Se però provo ad accedere con NHibernate non mi funziona. Il problema, da quello che segnala a video, sembra essere il Dialect non riconosciuto.

In giro ho trovato quasi solo esempi che usano SQL Server e non saprei come configurare altre fonti.

Qualcuno mi sa dare una dritta per configurare NHibernate per Oracle e per ODBC? (in futuro avrò bisogno anche di ODBC).

Purtroppo sul sito di NHibernate non ho trovato nulla a proposito (anche se ammetto che sono un po' scarso nelle ricerche. Alla fine mi sembrava di girare sempre sulle stesse 4 pagine del progetto NH).

Grazie mille!

Anonimo Profilo | Senior Member

Hai letto questo post per caso?

http://www.hibernate.org/361.963.html
Riccardo

volperubbia Profilo | Senior Member

Ciao,
sei riuscito poi a configurare NHibernate con Oracle? O a trovare altri esempi?
Io in parte, ma risolto un errore ne esce subito un'altro, l'ultimo è questo:
ORA-00904: "THIS_"."NAME": invalid identifier

Qualche idea?
Davide

pigi78 Profilo | Newbie

Sinceramente non so dirti nulla su quel tipo di errore, però sono riuscito a connettermi con Oracle.

Per farlo ho trovato questa strada (non so se ce ne siano di più semplici):

1) Installare ODP .NET (Oracle Data Provider). Nel mio caso ho installato la 11 anche se mi connetto ad un 10g


2) Impostare sul file tsnames.ora i dati della connessione. Nel mio caso il file si trova in C:\app\Administrator\product\11.1.0\client\Network\Admin e contiene:

MiaConnessione = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <indirizzo ip>)(PORT = <numero porta>)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = <nome SID>) ) )

Ovviamente sono da sistemare i vari valori con i dati del server a cui ci si deve connettere.


3) Nel progetto (nel mio caso un servizio WCF), nel file web.config impostare i dati per NHibernate nel seguente modo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Dove MiaConnessione è il nome usato nel TNSNAME.ORA seguiti da utente e password per connettersi ad Oracle.



Il resto è tutto uguale agli esempi per SQL Server

volperubbia Profilo | Senior Member

Ciao,
grazie per il consiglio, sono riuscito poi a configurare NHibernate su Oracle, anche dopo aver
capito che:
- è case sensitive
- vuole Overridable le property degli oggetti
- i files di mapping *.hbm.xml devono avere settati lo spazio nomi strumento,
il copia nella directory di output a copia sempre e operazione di compilazione
a risorsa incorporata.
Per completezza, metto qui sotto la parte di web.config che serve.

Davide

<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="MySite">
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="connection.connection_string">.................</property>
<property name="show_sql">true</property>
<property name="use_outer_join">true</property>
<property name="use_proxy_validator">true</property>
<property name="command_timeout">60</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<mapping assembly="MySite"/>
</session-factory>
</hibernate-configuration>
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5