iBatisNet的providers.config的几点实践

最近在做升级老系统的.Net Framework 版本上,遇到iBatis Net组件,发现本身提供的Oracle的Provider只有oracle9.2和oracle10.1

由于现有的Oracle Client已经到11i了 (new Version:2.112.1.0),想尝试增加Oracle11i配置

于是在Providers.config增加了

<provider
  name="oracle11i"
  description="Oracle, oracle provider V2.112.1.0"
  enabled="true"
  assemblyName="Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
  commandClass="Oracle.DataAccess.Client.OracleCommand"
  parameterClass="Oracle.DataAccess.Client.OracleParameter"
  parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
  parameterDbTypeProperty="OracleDbType"
  dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
  commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
  usePositionalParameters="true"
  useParameterPrefixInSql="true"
  useParameterPrefixInParameter="true"
  parameterPrefix=":"
  useDeriveParameters="false"/>

同时移除掉Web.config中的

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess"
       publicKeyToken="89b483f429c47342"
       culture="neutral" />
        <bindingRedirect oldVersion="9.2.0.401-10.9.9.999" newVersion="2.112.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

并将SqlMap.config的database provider 的name改为Oracle 11i

 <!-- Database connection information -->
 <database>
  <provider name="oracle11i" />  
  <dataSource name="DB" connectionString="Password=xxgpcs;Persist Security Info=True;Enlist=False;User ID=xxgpcs;Data Source=dev" />
 </database>

打开系统页面时报错

 IBatisNet.Common.Exceptions.ConfigurationException: - The error occurred while loading Providers. - initialize provider - Check the oracle9.2. ---> IBatisNet.Common.Exceptions.ConfigurationException: Could not configure providers. Unable to load provider named "oracle9.2" not found, failed

当时就有点灰心,难道ibatisNet不允许增加新的provider吗,不太符合config的理念

于是就将Oracle 9.2的provider的enable设为false,不然iBatis加载所有Enable =true的Provider

<provider
  name="oracle9.2"
  description="Oracle, Oracle provider V9.2.0.401"
  enabled="false"
  assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
  commandClass="Oracle.DataAccess.Client.OracleCommand"
  parameterClass="Oracle.DataAccess.Client.OracleParameter"
  parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
  parameterDbTypeProperty="OracleDbType"
  dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
  commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
  usePositionalParameters="false"
  useParameterPrefixInSql="true"
  useParameterPrefixInParameter="false"
  parameterPrefix=":"
  useDeriveParameters="false"/>

这样系统就可以正常使用了

之前还错误的判读是不能修改或移除相应的provider,其实只需要设定Enable=false即可


通过这次经历,对ibatis.net的机制有更深入的了解


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值