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

来源:互联网 发布:pi实时数据库官网 编辑:程序博客网 时间:2024/04/27 18:02

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

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

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

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

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

       首先,下载Install-Package AutoMapper

      

       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不能满足你的程序实现,需要调用其他模型时,请考虑它把~

0 0
原创粉丝点击