我已经关注了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)
提前致谢
答案 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文件夹中。这对我来说过去很有用。