<span style="font-family: Arial, Helvetica, sans-serif;">一个project 中用到Ibatis做数据持久层,可以正常运行。但是将这个project引用到另一个solution中时,就会报错。</span>
追踪到ibatis内核代码中,发现IBatisNet.Common.Utilities.TypesResolver类中有一个LoadTypeByIteratingOverAllLoadedAssemblies方法,它的作用就是用反射的方式为TypeAlias节点map出对应的自定义实体类。
private static Type LoadTypeByIteratingOverAllLoadedAssemblies(TypeAssemblyInfo typeInfo)
{
Type type = null;
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly assembly in assemblies)
{
type = assembly.GetType(typeInfo.TypeName, false, false);
if (type != null)
{
return type;
}
}
return type;
}
可以看到它用AppDomain.CurrentDomain.GetAssemblies()

当在ibatis中遇到'The error occurred while loading SqlMap. - initialize type alias'的报错,问题可能在于TypeAlias所指的实体类在非启动项目的程序集中且未被激活。解决方案是在访问数据库前,通过实例化TypeAlias对应的类来触发程序集加载,确保ibatis能正确识别并加载typeAlias。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



