在Teddy 的博客《NBearMapping - 开源通用对象映射组件v1.0.0.2 beta - 支持枚举类型字段》,介绍了NBear 的一些功能。由于这将是NBearV4中的一个基础组件,所以对性能的要求比较严格。原先的性能相对还是比较难以满足要求,在此基础框架思路下,经过近一段时间的开发,终于完成了NBearMapping新版本的开发,这个版本的主要功能仍然不变,在此基础上新增了:
1、对配置语法的支持。
2、简化了使用接口。
3、重新设计了映射实现,支持不同字段类型的自动转换,同时具备了非常高的性能。性能与手工代码相比不会有大的损失,在相同字段类型映射时,性能与手工代码相当(有时的从测试效果来看还会更好些)。在不同字段类型映射,NBearMapping 与手工代码的时间比大约在 1.3(到2.0)比1之间。可参考MappingTest.TestPerformance 1-4测试用例。
NBear.Mapping是一个独立组件,不会依赖于NBearV4的其它组件。因此它是可以单独使用的,甚至你也可以与NBearV3同时使用。目前新版本支持:
1、对象与对象之间,对象与弱类型之间(NameValueCollection,DataRow,IDictionary,IDataReader)的互转换。其中与IDataReader是单向转换。
2、对集合数组的对象的成批映射,将集合与DataTable互转。
3、在配置文件中,支持在不重新编译程序的情况下,对不同字段名的映射,映射顺序,过滤字段,自定义映射需求的随时修改,方便维护。
4、弱类型与弱类型之间的转换,暂时不推荐使用。如果您确实有这样的需求,可以与我联系。我会增加对这个功能的支持。
NBearV4 SVN地址:http://svn.cnblogs.com:8080/svn/NBear
在接下来的一段时间里,我会陆续介绍它的使用方法,和详细的配置文档说明。
2007/12/16 更新:
目前NBear.Mapping已经更新为V1.0.1.1 beta,更改内容:
1.增加对ConvertHandler的缓存。
2.优化了一些接口的作用域。
3.解决了defaultInitTypes没有生效的BUG。
4.解决了映射顺序没有指定会出错的BUG
2007/12/23
Version 1.0.1.3 beta
1.解决了DataTable中的DBNull转换出错问题。
2.增加了ObjectConvertor的ToObject重载,支持外面传入已创建好的输出对象。
2007/12/25
Version 1.0.1.4 beta
1.去掉在1.0.1.2版本中的dataTable.AcceptChanges() 调用,在ToDataTable接口增加DataRowState参数,由用户来决定DataRow的状态。
2.丰富了ToList重载,支持非泛型的调用,返回值改为数组,不返回集合。
Version 1.0.1.8 beta (2008/02/23)
1.解决IDataReader映射到Object时,如果有字段类型为Guid,在映射时会报错的Bug。 (感谢yiway反馈的BUG)
Version 1.0.1.7 beta (2008/01/30)
1.解决数据库字段为空时,使用IDataReader转换到Object会出错的异常。
Version 1.0.1.6 beta (2008/01/29)
1.解决了实体有继承关系的话就会在ConvertorGeneratorHelper 类的GetMembers 方法中报错"已添加了具有相同键的项",子实体的属性被添加后,有又添加了父实体的属性。导致"已添加了具有相同键的项"错误
Version 1.0.1.5 beta
1.增加了对源字段和目标字段是否存在的判断。