4

J'utilise Fluent NHibernate pour interroger ma base de données Oracle 11g. Dans les fichiers de mappage couramment j'ai une cartographie qui ressemble à ce queComment arrêter NHibernate d'ajouter "this_." aux requêtes sans créer de dialecte

Map(x => x.WaterLevel).Formula("CAST(WATER_LEVEL AS DOUBLE PRECISION)") 

Cependant, quand je lance mes tests, je reçois

Oracle.DataAccess.Client.OracleException : ORA-00907: missing right parenthesis 

En raison de chaînes supplémentaires (this_.) Dans la traduction SQL:

CAST(this_.WATER_LEVEL AS this_.DOUBLE this_.PRECISION) 

J'ai parlé How can you stop NHibernate (via ActiveRecord) adding this_. to a table name in a formula et How can I stop NHibernate adding "or this._property is null" to generated queries? assi Les solutions proposées n'ont pas fonctionné pour moi.

Répondre

0

La seule façon de reproduire votre problème était de désactiver le paramètre dialect. D'autres mots, pour utiliser le NHibernate.Dialect.GenericDialect.

Mais aucun de ces dialectes, fonctionne correctement:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory name="myFactory"> 
    ... 
    <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property> 
    // or 
    <property name="dialect">NHibernate.Dialect.Oracle9iDialect</property> 
    // or 
    <property name="dialect">NHibernate.Dialect.Oracle8iDialect</property> 

Donc, vous n'avez pas CREATE dialecte comme indiqué dans la question. Il suffit d'utiliser l'un des existants, ce qui est toujours meilleur choix que celui générique ...

Questions connexes