首页 > 代码库 > autoMapper-- 无缘也成有缘(一)

autoMapper-- 无缘也成有缘(一)

          与autoMapper是在做高效平台项目一开始的时候某某同学极力推荐我看的,看了以后感觉这个东西可真的很好使,下面就分享给大家!

          先介绍一下它的产生背景,结合我现在在做的项目来说,这个项目的前台用的是MVC,后台用的是WCF+三层+工厂+反射,看上去很高大上的样纸 ~~,于是开始了冲动的代码之旅,可是在写数据契约的时候发现了EF中生成的实体我用到了可能很多,于是写啊~复制啊~粘贴啊~原以为很霜,全部纯手工打造,可是遇到了AutoMapper,我后悔~莫及~~

            在看大神们博客的过程中,发现了一种叫做贫血模型的,其实也就是我们的数据表映射处理出来的实体模型,这种模型只有固定数量的属性,如果你想用多个模型中的属性时,就会山路十八弯了,举个例子

       如果把Entity Framework比作机关枪,那实体类的属性就是子弹,每颗子弹只能攻击唯一对应的目标,在射击过程中,只要有一颗子弹攻击的目标不存在,机枪就会卡壳(子弹决定目标?)。这时,Entity Framework成为了一堆废铁。

       为什么不由目标决定子弹?出现什么目标,用什么子弹,既节省子弹,又不会卡壳。也就是根据查询结果给对应的实体类属性赋值。难道这个新式武器也有设计缺陷,没有考虑到这样的应用场景?还是我们不会使用?

       首先,下载

      技术分享

       2、下面是我做的一个小例子:要记得添加引用哦!

<span style="font-size:14px;"><strong><span style="color:#ff0000;">using AutoMapper;
</span></strong>
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实体映射规则,onclass为源数据契约、TimeTable为目标数据契约
            Mapper.CreateMap<OnClass, TimeTable>();
            //为源数据赋值
            OnClass onclass = new OnClass
            {
                OnClassID = "001",
                OnClassNo = "002",
                OnClassName = "dandan"
            };
            //将源数据的值映射给目标数据
            TimeTable timetable = Mapper.Map<TimeTable>(onclass);
            //显示
           Console.WriteLine(timetable.OnClassID+timetable.OnClassNo+timetable.OnClassName);
        }
    }
}
</span>
             看一下效果:

             技术分享

              简单的AutoMapper介绍完了,有没有感觉到它的巨大作用呢?如果你的EF不能满足你的程序实现,需要调用其他模型时,请考虑它把~

autoMapper-- 无缘也成有缘(一)