2009-12-21 3 views
0

J'essaie d'exécuter un fichier NHibernate sur sqlite. i ont deux projets: 1. Orange.Database - Maintient les pocos et OTI et tout le reste 2. Orange.GUI - détient le ... IUGNHibernate et sqlite - Impossible de compiler le document de mappage

lorsque le programme toucherait aux atteindre le:

Configuration config = new Configuration(); 
    config.AddAssembly("Orange.Database"); 
    sessionFactory = config.Configure().BuildSessionFactory(); 

une exception est levée: "Impossible de compiler le document de mapping: Orange.Database.Pocos.City.hbm.xml" d'exception interne: "Impossible de trouver le dialecte dans la configuration"

city.hbm .xml:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
       namespace="Orange.Database.Pocos"> 


<class name="City" table="Cities"> 
<id name="Id"> 
    <column name="Id" sql-type="int" not-null="true"/> 
    <generator class="identity"/> 
</id> 

<property name="Name"> 
    <column name="name" not-null="true"/> 
</property> 

<property name="IsTaxFree"> 
    <column name="is_tax_free" not-null="true"/> 
</property> 
</class> 
</hibernate-mapping> 

J'ai essayé ecrivais le montage, puis enlevé ..

le fichier app.config:

<?xml version="1.0" encoding="utf-8" ?> 

<configSections> 

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

    </configSections> 

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

<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="connection.driver_class">NHibernate.Driver.SQLiteDriver</property> 
    <property name="connection.connection_string"> 
    Data Source=C:\Users\Nadav\Documents\Visual Studio 2005\Projects\orange\DB\OrangeDB\OrangeDB.db;Version=3 
    </property> 
    <property name="dialect">NHibernate.Dialect.SQLiteDialect</property> 
    <property name="query.substitutions">true=1;false=0</property> 

</session-factory> 
</hibernate-configuration> 
</configuration> 

J'ai essayé un autre endroit de la db fichier .. J'ai essayé d'enlever les configSections et quelques autres idées que j'ai trouvé sur le web ...

J'utilise vs 2005 la version NHibernate est 2.0.1.4000

Toutes les suggestions?

+0

voir http://stackoverflow.com/questions/1460045/sql-data-sqllite-version-with-nhibernate-2-1 –

Répondre

0

Tout d'abord, téléchargez la dernière version stable de NHibernate, 2.1.2.

Deuxièmement, essayez de créer un fichier de configuration nommé hibernate.cfg.xml, contenant:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="connection.driver_class">NHibernate.Driver.SQLiteDriver</property> 
     <property name="connection.connection_string"> 
      Data Source=C:\Users\Nadav\Documents\Visual Studio 2005\Projects\orange\DB\OrangeDB\OrangeDB.db;Version=3 
     </property> 
     <property name="dialect">NHibernate.Dialect.SQLiteDialect</property> 
     <property name="query.substitutions">true=1;false=0</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
    </session-factory> 
</hibernate-configuration> 
+0

Merci pour la réponse. J'ai mis à jour la version NHibernate à 2.1.0.4000 ajouter le fichier hibernate.cfg.xml au répertoire racine ajouté castle.core castle.DynamicProxy2 et NHibernate.ByteCode.castle et je reçois toujours: message: Impossible de compiler le mappage document: Orange.Database.Pocos.City.hbm.xml internal: Impossible de trouver le dialecte dans la configuration merci encore –

+0

Êtes-vous sûr que hibernate.cfg.xml est en cours de copie dans le dossier bin? –

2

Faites ceci dans votre code:

Configuration config = new Configuration(); 
config.Configure(); 
config.AddAssembly("Orange.Database"); 
sessionFactory = config.BuildSessionFactory(); 
+0

Cela a corrigé mon occurrence du même problème, avec Sybase que la base de données. –

0

j'ai eu le même "ne pouvait pas compiler erreur" mais je n'utilise pas sqlite. Je l'ai eu car j'appelais deux fois la méthode configure de l'instance de configuration nhibernate.