Nhibernate 链接Oracle10g 使用Oracle.DataAccess
2012-06-14 11:13
435 查看
在ASP.NET 中,打开web.config
添加配置1
<configSections>
<!--NHibernate 配置-->
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections> 添加配置2 <connectionStrings>
<add name="oracle10gdb" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=ORCL)));User Id=gc;Password=gc;" providerName="Oracle.DataAccess.Client"/>
</connectionStrings> 根据自己项目修改HOST,SID及账户密码 添加配置3 <!-- Nhibernate 配置 -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect </property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string_name">
oracle10gdb
</property>
<property name="hbm2ddl.keywords">none</property>
<property name="show_sql">true</property>
<property name="current_session_context_class">web</property>
<!--包含持久化类以及对应映射文件所在的应用程序集名称<property name="show_sql">true</property>-->
<mapping assembly="Guoc.DAL" />
</session-factory>
</hibernate-configuration> 注意配置3粗体字部分。 <property name="hbm2ddl.keywords">none</property> 配置原因参考网络上一段话:
现在已经可以运行下试试了,不过很可能会抛出“OracleClientDriver does not support CallableStatement syntax (stored procedures). Consider using OracleDataClientDriver instead.”这个异常,如果你和我一样用的是“NHibernate.Driver.OracleClientDriver”的话。解决方法是,在hibernate.cfg.xml文件里把“<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>”改成“<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>”,然后把“Oracle.DataAccess.dll”(在Oracle客户端的安装目录下可以找到它)复制到网站的bin目录下。
再次运行程序,会抛出“无法将类型为“Oracle.DataAccess.Client.OracleConnection”的对象强制转换为类型“System.Data.Common.DbConnection”。 ”异常。引发这个异常的是“NHibernate\Tool\hbm2ddl\SuppliedConnectionProviderConnectionHelper.cs”。第25行:“connection = (DbConnection)provider.GetConnection();”。有一个方法可以绕过这行代码的执行,就是在hibernate.cfg.xml里增加一行“<property name="hbm2ddl.keywords">none</property>”。
添加配置1
<configSections>
<!--NHibernate 配置-->
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections> 添加配置2 <connectionStrings>
<add name="oracle10gdb" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=ORCL)));User Id=gc;Password=gc;" providerName="Oracle.DataAccess.Client"/>
</connectionStrings> 根据自己项目修改HOST,SID及账户密码 添加配置3 <!-- Nhibernate 配置 -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect </property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string_name">
oracle10gdb
</property>
<property name="hbm2ddl.keywords">none</property>
<property name="show_sql">true</property>
<property name="current_session_context_class">web</property>
<!--包含持久化类以及对应映射文件所在的应用程序集名称<property name="show_sql">true</property>-->
<mapping assembly="Guoc.DAL" />
</session-factory>
</hibernate-configuration> 注意配置3粗体字部分。 <property name="hbm2ddl.keywords">none</property> 配置原因参考网络上一段话:
现在已经可以运行下试试了,不过很可能会抛出“OracleClientDriver does not support CallableStatement syntax (stored procedures). Consider using OracleDataClientDriver instead.”这个异常,如果你和我一样用的是“NHibernate.Driver.OracleClientDriver”的话。解决方法是,在hibernate.cfg.xml文件里把“<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>”改成“<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>”,然后把“Oracle.DataAccess.dll”(在Oracle客户端的安装目录下可以找到它)复制到网站的bin目录下。
再次运行程序,会抛出“无法将类型为“Oracle.DataAccess.Client.OracleConnection”的对象强制转换为类型“System.Data.Common.DbConnection”。 ”异常。引发这个异常的是“NHibernate\Tool\hbm2ddl\SuppliedConnectionProviderConnectionHelper.cs”。第25行:“connection = (DbConnection)provider.GetConnection();”。有一个方法可以绕过这行代码的执行,就是在hibernate.cfg.xml里增加一行“<property name="hbm2ddl.keywords">none</property>”。
相关文章推荐
- 关于在Asp.net下使用Oracle.DataAccess.dll(Oracle10g)执行参数化Update无效的解决方案之一
- 关于在Asp.net下使用Oracle.DataAccess.dll(Oracle10g)执行参数化Update无效的解决方案之一
- 使用C# 连接不同版本的Oracle.DataAccess
- Oracle.ManagedDataAccessDTC.dll 使用
- .NET中使用ODP(Oracle.DataAccess)连接Oracle数据时出现的异常
- C#里使用Oracle提供的Oracle.DataAccess 返回包里的记录集游标,含Oralce里的分页包代码
- 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
- 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
- 【转】使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
- C#连接Oracle数据库(直接引用dll使用-Oracle.ManagedDataAccess.dll)
- ADO.NET(二) oracle数据库链接、和Oracle.DataAccess.dll 有关异常的各种问题
- 64位系统IIS使用32位Oracle.DataAccess解决方案
- C# 使用Oracle.DataAccess.dll注意事项
- C#使用Oracle.ManagedDataAccess.dll
- [DevExpress使用随笔]之Oracle.DataAccess
- Oracle.ManagedDataAccess + EF的使用
- 使用C# 连接不同版本的Oracle.DataAccess
- Nhibernate下使用Oracle提示 “Could not create the driver from NHibernate.Driver.OracleDataClientDriver”
- 使用 Oracle Data Access Components连接oracel
- [ASP.NET]使用Oracle.ManagedDataAccess的OracleParameter参数化和OracleDataAdapter模糊查询