前两天想使用ibatis.net做一个项目,其实本来不必这么复杂,因为项目时间很短,可就是不能逃过我的好奇心,偏就边学边用你了。
上到ibatis网站转了转,看了看,下载了DataMapper 1.6.1 ,DataAccess 1.9.1 (下载地址
http://ibatis.apache.org/dotnetdownloads.cgi),感觉这个框架确实很好很强大,也很美很复杂,好在有网上那么多朋友写了教
程,随即就找两篇配置一下,感觉也不会有多难。
一上手ibatis.net就傻了,足足花费了一天配置环境,直汗,在次把这次配置我遇到的问题和注意事项写下来,也好避免有朋友犯类
似雷人的错误.
1.一定要在官方网站看一下ibatis.net的两个文档
DataMapper 1.6.1文档:http://ibatis.apache.org/docs/dotnet/datamapper/index.html
DataAccess 1.9.1文档:http://ibatis.apache.org/docs/dotnet/dataaccess/index.html
里面基本上有很多关键的问题都说的很清楚。
2.如果你下载了NPetShop或NPetShop2代码,或者参考一些朋友先前的配置文件,注意这些项目或者文章使用的配置文件很可能已经
陈旧,不适用于ibatis.net 1.3以上版本了。一定按照官方的文档中的配置方式配置。切记不可运行的一切的根源可能不在于你的代
码,而在于配置文件没有配置好。尤其要注意每个配置文件的头部信息,特别是xmlns和xmlns:xsi,切记对照官方文档检查清楚。
3.一定要正确的引用Castle.DynamicProxy类库,这个是关键的关键,在官方文档中有详细的描述。
4.当碰到这个出错提示ibatis.net This SQL map does not contain a MappedStatement named
往往是没有加载SqlMap.config所导致,最简单的验证方法是将SqlMap.config中
<sqlMaps>
<sqlMap url="E:\Projet\NPetshop\Source\NPetshop.Web\Maps\Category.xml"/>
</sqlMaps>
url的配置改成一个不存在的.xml文件,这时启动项目后肯定报错找不到文件。
5.如果报System.NullReferenceException: 未将对象引用设置到对象的实例的错误,即:
行 35: DomDaoManagerBuilder builder = new DomDaoManagerBuilder();
行 36: builder.ConfigureAndWatch("dao.config", handler);
一般都是没有正确的引用Castle.DynamicProxy类库。
6.最佳参看的示例在http://www.cnblogs.com/anderslly/archive/2007/08/07/npetshopsourcecode.html感谢作者,重写了
NPetShop的示例。