NHibernate - 在配置中找不到(oracle)方言

时间:2009-07-02 11:22:41

标签: oracle nhibernate

我已经关注了hibernate.cfg.xml

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

现在我收到以下错误:

  

失败:NHibernate.MappingException:   无法编译映射   文献:   Mob.Icecube.Data.NH.Mappings.Customer.hbm.xml   ----&GT; System.InvalidOperationException:无法在中找到方言   构造

任何人都可以帮我解释为什么他找不到司机? 一些额外的信息......它目前仅在UnitTest应用程序内运行                    我将NHibernate和System.Data.OracleClient添加到项目的引用中                    使用最新的NHibernate版本(2.2 beta)

提前致谢

3 个答案:

答案 0 :(得分:6)

NHibernate程序集中没有NHibernate.Dialect.Oracle9Dialect方言。

有一个NHibernate.Dialect.Oracle9iDialect。

检查您的NHibernate配置文件是否正确加载。使用类似的东西:

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

这假设您的NHibernate配置文件名为hibernate.cfg.xml,并且位于应用程序的根目录下。

答案 1 :(得分:1)

我现在在网站上注册了自己,似乎现在我不再允许留下任何评论,所以我会在新的答案中再次发布代码:D

创建配置和工厂:         配置config = new Configuration();         config.AddAssembly( “MyLib.Data.NH”);         ISessionFactory factory = config.BuildSessionFactory();

我现在也改变了配置以使用(应该可用的)Oracle10gDialect(虽然我也尝试了9i但没有成功)。

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

答案 2 :(得分:0)

您是否在PC上本地安装了Oracle客户端?我相信这提供了一些你可能需要连接的驱动程序,但我不确定。如果是这样,请尝试将Oracle.DataAccess.dll文件从安装中复制到项目的bin文件夹中。这对我来说过去很有用。