Green.AgileMapper开源项目的使用(1)

在架构设计中,利用领域驱动开发时,涉及到do(领域对象)和dto(数据传输对象)的相互装换匹配,这段代码简单但是重复频率太多,写得我很冒火(我有个职责是wcf SOA包装),我是个不喜欢重复劳动的懒人,我在网上搜索等到很多实体匹配的框架EmitMapper,AutoMapper等,但是他们都不能满足dto和do的对象的按规则匹配包装。最后我只得花了半个小时写了一个简单的代码生成器,完成了我的任务。但是事后总觉得不爽,于是有了写下这个AgileMapper框架来适应领域开发中的po,do,dto,vo着一些列对象的相互包装,建立一个按规则包装的Mapper框架。项目已经完成上传于CodePlex http://agilemapper.codeplex.com/ ,目前刚成型,希望大家能够帮助测试,提出bug,或者修复。我不是很清楚开源协议,选择了一个 协议。大家可以随便使用和修改应用来满足各自的需求,但是如果有些bug修复或者好的通用的修改希望大家能够,提交供我和其他人学习共同进步,但是这不是必须的,你也可以选择保留。

       AgileMapper架构设计类图:

Green.AgileMapper开源项目的使用(1)

    在AgileMapper中支持多种MappingConfigurator(匹配管理器)都集成至MappingConfiguratorBase(MappingConfiguratorBase中拥有唯一的对象之间对于相等的默认表达式守信,针对于dto转化为do对象级联删除情况),内置了AttributeMappingConfigurator,XMLMappingConfigurator,DataRowMappingConfigurator三种匹配管理器。支持xml书写,attribute标记规则。由这些管理器根据具体标记标记方式产生一组IMappingRule(匹配规则),内置了5中匹配规则(简单,集合,表达式,对象,datarow)。

   在AgileMapper为我们提供了MappingConfiguratorBase的扩展,IMappingRule的扩展,已经多余Attribute标注的扩展CustomerMappingAttribute,已经xml的配置扩展。

下面我们来使用AgileMapper提供的内置Mapper。

测试预备:

Domain Object:

Green.AgileMapper开源项目的使用(1)View Code

Dto:

Green.AgileMapper开源项目的使用(1)View Code

一:Attribute标注:

Green.AgileMapper开源项目的使用(1)View Code

二:xml配置标注规则: 

Green.AgileMapper开源项目的使用(1)View Code

测试代码:

Green.AgileMapper开源项目的使用(1)View Code

三:DataRow的测试: 

测试预备StudentModelForDataRow:

Green.AgileMapper开源项目的使用(1)View Code

测试代码: 

Green.AgileMapper开源项目的使用(1)View Code

     DataRow匹配针对相同的表结构和不同表结构,以及实体类和DataRow之间的转化。 

单元测试结果:

Green.AgileMapper开源项目的使用(1)

     对于xml配置的架构还没做,以及基于T4模板的按照规则代码生成模板还在进一步开发中,敬请期待。

     今天就写在这里了,欢迎大家的指正和修改,希望你的修改如果更好能通知我,给我好的建议和探讨,谢谢。


本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2012/03/29/AgileMapper1.html,如需转载请自行联系原作者