我使用Fluent NHibernate查询我的Oracle 11g数据库。 在流畅的映射文件中,我有一个看起来像
的映射Map(x => x.WaterLevel).Formula("CAST(WATER_LEVEL AS DOUBLE PRECISION )")
但是,当我运行测试时,我得到了
Oracle.DataAccess.Client.OracleException : ORA-00907: missing right parenthesis
由于SQL转换中的其他字符串(this_。):
CAST(this_.WATER_LEVEL AS this_.DOUBLE this_.PRECISION )
我提到过 How can you stop NHibernate (via ActiveRecord) adding this_. to a table name in a formula 和How can I stop NHibernate adding "or this._property is null" to generated queries?但建议的解决方案对我不起作用。
答案 0 :(得分:0)
重现问题的唯一方法是关闭方言设置。换句话说,要使用NHibernate.Dialect.GenericDialect
。
但是这些方言中的任何一种都正常运作:
<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>
因此,您不必按照问题中的说明创建方言。只需使用现有的一个,这总是更好的选择,然后是通用的......