nhibernate3.0连接oracle11g( 版本11.1.0.6.0)

 

 

 通过ODAC方式连接.

1.下载支持oracle11g的ODAC

Each 32-bit ODAC client download below supports connectivity to Oracle Database versions 9.2, 10.1, 10.2, and 11.1, and 11.2.

各版本详情下载

http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html

明细情况

http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

2.我下载了最全版的"ORAC1110621.zip"安装后,生成

$ORACLE_HOME$\11.1.0\db_1\ODP.NET\bin.默认有支持.net1和.net2的框架如下图

以.net2.0为例

其中oraprovcfg.exe可以注册相关信息,暂时不用,通过手动方式加入,同于文档中暂未提到支持.net4.0,所以我只针对一个项目增加该配置信息

 

3.安装后会自动注册machine.config中

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

在结点中分别增加了这两处代码与oracle.dataaccess相关,后面有用.

========================

  <configSections>
    <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>

=========================

 <system.data>
    <DbProviderFactories>
      <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>

       </DbProviderFactories>
  </system.data>

========================
4.配置nhibernate配置文件中的连接方式等信息.

   <db:provider id="DbProvider"  provider="OracleODP-2.0"
                     connectionString="Data Source=tns;User Id=username;Password=password;"/>

=================================================

  <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate30">
    <property name="DbProvider" ref="DbProvider"/>

    <property name="MappingAssemblies">
      <list>
        <value>WebApp.Model</value>
      </list>
    </property>
     <property name="HibernateProperties">
      <dictionary>
        <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
          <entry key="dialect" value="NHibernate.Dialect.Oracle10gDialect"/>
          <entry key="connection.driver_class" value="NHibernate.Driver.OracleDataClientDriver"/><!--通过这个方式会自动调用oracle.dataaccess,用反编译工具可以看到代码中写死了这个连接-->
          <entry key="hbm2ddl.keywords" value="none"/>

  <entry key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
      </dictionary>
    </property>

  </object>

 =============================================================

5.由于安装时,默认不会修改.net4.0框架中这部份的machine.config信息,所以参考.net2.0中自动生成的machine.config,加入oracle.dataaccess到项目配置文件web.config中

以下两步骤抄第3步中的信息.

======================================
    <configSections>

<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </configSections>

==================================================

    <system.data>
        <DbProviderFactories>
            <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        </DbProviderFactories>
    </system.data>   

 

]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]  nhibernate连接mysql]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

 附:注连接mysql

http://dev.mysql.com/downloads/connector/net/6.4.html

下载mysql-connector-net-6.4.3.msi

安装后

.net4.0框架的machine.config

会自动增加

====================================

    <DbProviderFactories>
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>

===================================

  <connectionStrings>
       <add name="LocalMySqlServer" connectionString="" />
  </connectionStrings>

======================================

  <db:provider id="DbProvider"  provider="MySql-5.0"
                   connectionString="Data Source=localhost;User Id=username;Password=pwd;database=dbname"/>

=============================

<entry key="dialect" value="NHibernate.Dialect.MySQLDialect"/>
          <entry key="hibernate.connection.driver_class" value="NHibernate.Driver.MySqlDataDriver"/>

 

附注:相关异常小结

1 找不到请求的 .Net Framework Data Provider。可能没有安装。

原因:

   虽然按照上面步骤安装odp,但默认是不会加入.net4.0中的machine.config.

解决:

  方案一:采用上述方式在独立的项目web.config中加入相关结点信息.

  方案二:采用ODP.NET下提供的oraprovcfg来生成配置信息,直接加入相应.net4.0框架machine.config中.命令如下:

oraprovcfg /action:config /product:odp /frameworkversion:v4.0.30319 /providerpath:D:\Oracle\app\xxx\product\11.1.0\db_1\ODP.NET\bin\2.x\Oracle.DataAccess.dll

 其中,providerpath带的参数必须是全路径信息.

2. NHibernate.Driver.OracleDataClientDriver...ctor()这个代表构造函数异常

TargetInvocationException: 调用的目标发生了异常。

原因:

在生成的bin文件中没有包括引入的Oracle.DataAccess.dll这个动态库,其他的在编辑时都会自动生成,不知道为什么这个没有自动生成.

解决方案:

1.在web.config中加入

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <qualifyAssembly partialName="Oracle.DataAccess" fullName="Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
        </assemblyBinding>
    </runtime>

2.同时拷备Oracle.DataAccess.dll,到项目生成文件假bin中.

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要使用NHibernate连接Oracle数据库,您需要进行以下配置步骤: 1. 首先,确保您已经安装了Oracle数据库并且可以访问它。如果尚未安装,请先安装并设置好。 2. 下载并引入NHibernate库和Oracle驱动程序。您可以从NHibernate官方网站(https://nhibernate.info)下载NHibernate库。至于Oracle驱动程序,您可以从Oracle官方网站(https://www.oracle.com/database/technologies/dotnet-odpnet-downloads.html)下载。 3. 在您的应用程序中创建一个NHibernate配置文件(通常是一个XML文件),配置连接字符串和其他必要的属性。以下是一个示例配置文件的基本结构: ```xml <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> <property name="connection.connection_string">your_connection_string_here</property> <!-- 其他配置属性 --> </session-factory> </hibernate-configuration> ``` 请将 "your_connection_string_here" 替换为您的Oracle数据库连接字符串。 4. 在您的应用程序中创建一个NHibernate SessionFactory 对象。您可以使用上述配置文件来创建它。以下是一个示例代码片段: ```csharp Configuration cfg = new Configuration(); cfg.Configure("path_to_your_config_file"); SessionFactory sessionFactory = cfg.BuildSessionFactory(); ``` 请将 "path_to_your_config_file" 替换为您的配置文件的路径。 5. 现在,您可以使用NHibernate的Session对象来执行数据库操作了。例如,您可以使用LINQ或HQL查询来检索、插入、更新或删除数据。 这只是一个基本的示例,NHibernate还有更多高级功能和配置选项。您可以参考NHibernate文档和示例代码来了解更多信息。 希望这可以帮助到您!如果您还有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值