现在的位置: 首页 > 综合 > 正文

ibatis.net 配置常见的错误

2013年02月13日 ⁄ 综合 ⁄ 共 3449字 ⁄ 字号 评论关闭

ibatis.net 调试中的常见错误:

一、DaoManager的实例为空

对于第一次使用ibatis.net开发项目的人,遇到此问题是难以避免的。
ibatis.net的配置非常灵活,但也比较繁琐,除非你使用Ibatis.net的代码生成器,以避免绝大部份的错误。
ibatis.net在对生成daoManager实例的时候,会对dao.config,SqlMap.config等文件会进行读取。
如果实体类中的属性,与ResultMap中Property的值不匹配时,就是报错:IBatisNet.Common.Exceptions.ConfigurationException。
另外,如果XML文件中使用了dynamic标签,那么请查看你的项目是否有加载Castle.DynamicProxy.dll的引用。
{System.NullReferenceException: Object reference not set to an instance of an object.
   at ESPS.IbatisNet.ServiceConfig.GetInstance() in H:/MSL_OA/ESPS/ESPS.IbatisNet/ServiceConfig.cs:line 43}

 

二、如果发生下面这种错误,主要的原因是你可能是用的.net framework 4.0 的开发环境,请将类库的.net framework版本改为3.5即可。 我也不明白其中具体的道理,应该是因为.net framework版本太高和ibatis.net的兼容性不太好所致。
{IBatisNet.Common.Exceptions.ConfigurationException:
- The error occurred while configure DaoSessionHandler.
- configure dao 
- Check the ESPS.Persistence.MapperDao.NewsSqlMapDao,ESPS.Persistence. ---> IBatisNet.Common.Exceptions.ConfigurationException: Error configuring DAO. Cause: Ambiguous match found. ---> System.Reflection.AmbiguousMatchException: Ambiguous match found.
   at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)
   at System.Type.GetMethod(String name)
   at Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.LockBlockExpression.Emit(IEasyMember member, ILGenerator gen)
   at Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ExpressionStatement.Emit(IEasyMember member, ILGenerator gen)
   at Castle.DynamicProxy.Builder.CodeBuilder.AbstractCodeBuilder.Generate(IEasyMember member, ILGenerator il)
   at Castle.DynamicProxy.Builder.CodeBuilder.EasyMethod.Generate()
   at Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.EnsureBuildersAreInAValidState()
   at Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType()
   at Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType()
   at Castle.DynamicProxy.Builder.CodeGenerators.InterfaceProxyGenerator.GenerateCode(Type[] interfaces, Type targetType)
   at Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateInterfaceProxy(Type[] interfaces, Type type)
   at Castle.DynamicProxy.ProxyGenerator.CreateProxy(Type[] interfaces, IInterceptor interceptor, Object target)
   at IBatisNet.DataAccess.Configuration.DaoProxy.NewInstance(Dao dao)
   at IBatisNet.DataAccess.Configuration.Dao.Initialize(DaoManager daoManager)
   --- End of inner exception stack trace ---
   at IBatisNet.DataAccess.Configuration.Dao.Initialize(DaoManager daoManager)
   at IBatisNet.DataAccess.Configuration.DomDaoManagerBuilder.ParseDaoFactory(ConfigurationScope configurationScope, DaoManager daoManager)
   at IBatisNet.DataAccess.Configuration.DomDaoManagerBuilder.GetContexts(ConfigurationScope configurationScope)
   at IBatisNet.DataAccess.Configuration.DomDaoManagerBuilder.GetConfig(ConfigurationScope configurationScope)
   at IBatisNet.DataAccess.Configuration.DomDaoManagerBuilder.BuildDaoManagers(XmlDocument document, Boolean useConfigFileWatcher)
   --- End of inner exception stack trace ---
   at IBatisNet.DataAccess.Configuration.DomDaoManagerBuilder.BuildDaoManagers(XmlDocument document, Boolean useConfigFileWatcher)
   at IBatisNet.DataAccess.Configuration.DomDaoManagerBuilder.Configure(String resource)
   at ESPS.IbatisNet.DaoLoader.GetInstance() in H:/MSL_OA/ESPS/ESPS.IbatisNet/DaoLoader.cs:line 37}

 

三、'ESPS.Service.LookupCodeService' 的型别初始化表达式发生例外状况 
出现这个问题一般来说都是读取dao.config时出错,之所以会出错就要追踪到SqlMap.config,
在SqlMap.config的sqlMaps节点中加入了很多的XML文件,而这些XML文件中如果一个文件内容不对,
都会导致整个配置的错误。为了避免出错,请确保dao.config、SqlMap.config和XML文件的内容都是正确的。

 

抱歉!评论已关闭.