[笔记]iBatisNET配置问题

题外话:前段时间,跟随潮流用了Linq(Linq to Sql),发现居然是MS Sql Server独占的,我这个气啊。。。。没办法在路上拣了个DBLinq,开始玩玩觉得不错,就加入到项目里用了,没想到这里bug,那里功能还没有提供,只是个空方法。。。。一路走来,全在吐血。。。。

后来公司技术顾问推荐用iBatisNET,不用学Linq语法或者其他什么ORM框架的语法,Sql和代码分离,支持多种数据库。感觉不错,从官方下了最新版的组件(下载),又从博友Anderson Cui那下载他修改后官方例子NPetShop(下载),在学习的过程中发现一些需要注意的问题:

1.如果连接的数据库不是被.NET内置支持的,记得把相应的动态链接库文件(比如:MySql.Data.dll)引入到Web层目录下,另外还要在目录下引入Castle.DynamicProxy.dll,IBatisNet.DataMapper.dll,IBatisNet.DataAccess.dll,IBatisNet.Common.dll。

2.Web层目录下的providers.config里记录了支持的数据库,及链接对应数据库需要的动态链接库文件,官方提供的配置有些使用动态链接库文件版本很老,你需要手动去修改,例:

修改前:

<provider
      name="MySql"
      description="MySQL, MySQL provider 1.0.7.30072"
      enabled="false"
      assemblyName="MySql.Data, Version=1.0.7.30072, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"
      commandClass="MySql.Data.MySqlClient.MySqlCommand"
      parameterClass="MySql.Data.MySqlClient.MySqlParameter"
      parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"
      parameterDbTypeProperty="MySqlDbType"
      dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"
      commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"
      usePositionalParameters="false"
      useParameterPrefixInSql="true"
      useParameterPrefixInParameter="true"
      parameterPrefix="?"
      allowMARS="false"   
  />

修改后(加亮这个一定要注意,如果为false,是不能连接数据库成功的):

<provider
      name="MySql"
      description="MySQL, MySQL provider V5.2.2.0"
      enabled="true"
      assemblyName="MySql.Data, Version=5.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection"
      commandClass="MySql.Data.MySqlClient.MySqlCommand"
      parameterClass="MySql.Data.MySqlClient.MySqlParameter"
      parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"
      parameterDbTypeProperty="MySqlDbType"
      dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"
      commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"
      usePositionalParameters="false"
      useParameterPrefixInSql="true"
      useParameterPrefixInParameter="true"
      parameterPrefix="?"
      allowMARS="false"   
  />

3.新版的SqlMap配置文件,也做了细微的调整,如果属性书写不正确,可能导致一些问题:

例:DataAccess.dll为1.9.2,DataMapper.dll为1.6.2,其dao的配置文件的开头部分是这样的:

<daoConfig xmlns="http://ibatis.apache.org/dataAccess" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<context><daoSessionHandler>的name属性不再使用,改为使用id。

SqlMap配置文件也有变化:
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

4.数据库连接

以往这部分是SqlMap.config文件里的,iBatisNET升级后,这部分被移到dao.config内,详见NPetShop示例程序

 

这个算是初步体验。以后有心得再续上。

posted @ 2008-11-12 18:24  Yes!加菲猫  阅读(1931)  评论(4编辑  收藏  举报