如何阻止NHibernate添加;这是“uuquot;在不创建方言的情况下执行查询

如何阻止NHibernate添加;这是“uuquot;在不创建方言的情况下执行查询,nhibernate,oracle11g,fluent-nhibernate,fluent-nhibernate-mapping,Nhibernate,Oracle11g,Fluent Nhibernate,Fluent Nhibernate Mapping,我正在使用Fluent NHibernate查询我的Oracle 11g数据库。 在fluent映射文件中,我有一个如下的映射 Map(x => x.WaterLevel).Formula("CAST(WATER_LEVEL AS DOUBLE PRECISION )") 然而,当我运行测试时,我得到 Oracle.DataAccess.Client.OracleException : ORA-00907: missing right parenthesis 由于SQL翻译中的其他字符

我正在使用Fluent NHibernate查询我的Oracle 11g数据库。 在fluent映射文件中,我有一个如下的映射

Map(x => x.WaterLevel).Formula("CAST(WATER_LEVEL AS DOUBLE PRECISION )")
然而,当我运行测试时,我得到

Oracle.DataAccess.Client.OracleException : ORA-00907: missing right parenthesis
由于SQL翻译中的其他字符串(此项):

 CAST(this_.WATER_LEVEL AS this_.DOUBLE this_.PRECISION )
我提到
但是建议的解决方案对我不起作用。

复制您的问题的唯一方法是关闭方言设置。换句话说,使用
NHibernate.dialogue.genericdialogue

但这些方言中的任何一种都能正常使用:

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

...
NHibernate.方言
//或
NHibernate.dial.Oracle9iDialect
//或
NHibernate.dial.Oracle8iDialect
因此,您不必像问题中所述创建方言。只要使用一个现有的,这总是更好的选择比一般的一个