2009-07-02 8 views
4

Ich habe folgende hibernate.cfg.xmlNHibernate - nicht finden konnte (Orakel) Dialekt in der Konfiguration

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
<session-factory> 
    <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
    <property name="connection.connection_string"> 
    User ID=user;Password=password;Data Source=database 
</property> 
    <property name="show_sql">false</property> 
    <property name="dialect">NHibernate.Dialect.Oracle9Dialect</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> 
</session-factory> 
bekam

Jetzt erhalte ich Fehler folgende:

failed: NHibernate.MappingException : Could not compile the mapping document: Mob.Icecube.Data.NH.Mappings.Customer.hbm.xml ----> System.InvalidOperationException : Could not find the dialect in the configuration

Kann jemand Hilf mir, warum er den Fahrer nicht finden kann? einige zusätzliche Informationen ... Es ist im Moment läuft nur in einer Unittest Anwendung ich die NHibernate und System.Data.OracleClient zu den Referenzen des Projekts die neueste Version NHibernate verwenden (2,2 beta)

Danke advance

Antwort

0

Haben Sie den Oracle Client lokal auf Ihrem PC installiert? Ich glaube, das bietet einige Treiber, die Sie möglicherweise verbinden müssen, aber ich bin mir nicht sicher. Wenn ja, versuchen Sie, die Datei Oracle.DataAccess.dll von Ihrer Installation in den Ordner bin Ihres Projekts zu kopieren. Das hat in der Vergangenheit für mich funktioniert.

+0

Ich habe den Client installiert, aber ich kann die Oracle.DataAccess.dll nirgendwo auf dem Laufwerk finden. Dann verwende ich hier den Datenprovider, der mit .NET (System.Data.OracleClient.dll) angegeben wurde. Der Fehler ist auf dem Dialekt, nicht der Treiber (noch): D –

6

In der NHibernate-Assembly gibt es keinen NHibernate.Dialect.Oracle9Dialect-Dialekt.

Es gibt ein NHibernate.Dialect.Oracle9iDialect.

Überprüfen Sie, ob Ihre NHibernate-Konfigurationsdatei korrekt geladen wurde. Verwenden Sie so etwas wie:

onfiguration config = new Configuration().Configure("hibernate.cfg.xml"). 

Dies wird Ihre NHibernate-Konfigurationsdatei unter der Annahme hibernate.cfg.xml genannt wird und ist an der Wurzel Ihrer Anwendung.

+0

Danke für diese Antwort. Nach der Verwendung von Reflektor auf der dll, kam ich zu der gleichen Constatation ... aber. Die Verwendung von Oracle10gDialect oder Oracle9iDialect gibt mir immer noch den gleichen Fehler -> konnte den Dialekt in der Konfiguration nicht finden. Es gibt immer noch etwas, was ich vermisse Ich denke, das hat sich in NHibernate 2.1 geändert. –

+0

Können Sie den Code, wo Sie die Konfiguration und die Sitzungsfactory erstellen, veröffentlichen? – Nigel

1

ich registriert mich jetzt auf der Website, und es scheint, dass ich nicht mehr zur Zeit keine Kommentare verlassen dürfen, also werde ich nur den Code wieder in eine neue Antwort schreiben: D

zu Erstellen Sie die Konfiguration und die Fabrik: Konfiguration config = new Configuration(); config.AddAssembly ("MyLib.Data.NH"); ISessionFactory factory = config.BuildSessionFactory();

Ich habe auch die Konfiguration jetzt geändert, um (was verfügbar sein sollte) Oracle10gDialect (obwohl ich 9i auch ohne Erfolg versucht).

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory name="NHibernate.Test"> 
     <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
     <property name="connection.connection_string"> 
     User ID=user;Password=password;Data Source=db 
    </property> 
     <property name="show_sql">false</property> 
     <property name="dialect">NHibernate.Dialect.Oracle10gDialect</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> 
    </session-factory> 
</hibernate-configuration> 
+1

Ich könnte mich irren, aber es sieht so aus, als würden Sie Ihre NHibernate-Konfigurationsdatei nicht bearbeiten, es sei denn, Sie haben einen Abschnitt in Ihrer web.config. Ersetzen Sie die Konfigurationseinstellungen config = new Configuration() und config.AddAssembly ("MyLib.Data.NH") durch Configuration config = new Configuration(). Configure ("hibernate.cfg.xml"). Angenommen, Ihre NHibernate-Konfigurationsdatei heißt hibernate.cfg.xml und befindet sich im Stammverzeichnis Ihrer Anwendung. – Nigel

+1

Ja, das ist es. Ich habe vergessen, config.Configure() zuerst hinzuzufügen, bevor ich die Assembly hinzufüge. Ich kann nicht glauben, dass ich einen ganzen Tag damit verschwendet habe (lol). Vielen Dank Nigel. Leider ist mein Ruf zu gering, um deine Antwort zu verbessern. – Ronald

+0

Das ist in Ordnung, ich bin froh, Ihnen helfen zu können. Komm zurück und ticke meine Antwort, wenn du etwas Ansehen hast;). – Nigel

Verwandte Themen