2009-07-02 4 views
4

J'ai la suite hibernate.cfg.xmlNHibernate - n'a pas pu trouver (oracle) dialecte dans la configuration

<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> 

Maintenant, je reçois l'erreur suivante:

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

Quelqu'un peut-il aidez-moi pourquoi il ne peut pas trouver le conducteur? Quelques infos supplémentaires ... Il est en cours d'exécution au moment que dans une application UnitTest j'ai ajouté le NHibernate et System.Data.OracleClient aux références du projet En utilisant la dernière version NHibernate (2.2 beta)

Merci à avance

Répondre

0

Le client Oracle est-il installé localement sur votre ordinateur? Je crois que cela fournit certains pilotes que vous devrez peut-être connecter, mais je ne suis pas sûr. Si c'est le cas, essayez de copier le fichier Oracle.DataAccess.dll de votre installation dans le dossier bin de votre projet. Cela avait fonctionné pour moi, par le passé.

+0

J'ai le client installé mais je ne trouve pas l'Oracle.DataAccess.dll n'importe où sur le lecteur. Là encore, j'utilise ici le fournisseur de données donné avec .NET (System.Data.OracleClient.dll). L'erreur est sur le dialecte, pas le pilote (encore): D –

6

Il n'y a pas de dialecte NHibernate.Dialect.Oracle9Dialect dans l'assembly NHibernate.

Il existe un objet NHibernate.Dialect.Oracle9iDialect.

Vérifiez que votre fichier de configuration NHibernate est chargé correctement. Utilisez quelque chose comme:

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

Cela suppose votre fichier de configuration de NHibernate est appelée hibernate.cfg.xml et est à la racine de votre application.

+0

Merci pour cette réponse. Après avoir utilisé le réflecteur sur la DLL, je suis arrivé à la même constatation ... cependant. L'utilisation de Oracle10gDialect ou Oracle9iDialect me donne toujours la même erreur -> Impossible de trouver le dialecte dans la configuration. Il y a encore quelque chose qui me manque Je suppose que cela a changé dans NHibernate 2.1 –

+0

Pouvez-vous poster le code où vous créez la configuration et la fabrique de sessions? – Nigel

1

Je me suis inscrit maintenant sur le site, et il semble que pour le moment je ne suis pas plus permis de laisser des commentaires, donc je vais juste afficher le code à nouveau dans une nouvelle réponse: D

Pour créer la config et l'usine: Configuration config = new Configuration(); config.AddAssembly ("MyLib.Data.NH"); ISessionFactory factory = config.BuildSessionFactory();

J'ai également changé la configuration maintenant pour utiliser (ce qui devrait être disponible) Oracle10gDialect (bien que j'ai essayé 9i aussi sans succès).

<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

Je peux me tromper, mais il semblerait que vous ne traitiez pas votre fichier de configuration NHibernate, à moins que vous n'ayez une section dans votre fichier web.config. Essayez de remplacer Configuration config = new Configuration() et config.AddAssembly ("MyLib.Data.NH") avec Configuration config = new Configuration(). Configure ("hibernate.cfg.xml"). Cela suppose que votre fichier de configuration NHibernate s'appelle hibernate.cfg.xml et qu'il se trouve à la racine de votre application. – Nigel

+1

Oui, c'est tout. J'ai oublié d'ajouter config.Configure() avant d'ajouter l'assembly. Je ne peux pas croire que j'ai perdu une journée entière à ce sujet (lol). Merci beaucoup Nigel. Malheureusement, ma réputation est trop faible pour augmenter votre réponse. – Ronald

+0

C'est bon, heureux d'être utile. Revenez et cochez ma réponse quand vous aurez de la réputation;). – Nigel

Questions connexes