天天看點

autoMapper-- 無緣也成有緣(一)

          與autoMapper是在做高效平台項目一開始的時候某某同學極力推薦我看的,看了以後感覺這個東西可真的很好使,下面就分享給大家!

          先介紹一下它的産生背景,結合我現在在做的項目來說,這個項目的前台用的是MVC,背景用的是WCF+三層+工廠+反射,看上去很高大上的樣紙 ~~,于是開始了沖動的代碼之旅,可是在寫資料契約的時候發現了EF中生成的實體我用到了可能很多,于是寫啊~複制啊~粘貼啊~原以為很霜,全部純手工打造,可是遇到了AutoMapper,我後悔~莫及~~

            在看大神們部落格的過程中,發現了一種叫做貧血模型的,其實也就是我們的資料表映射處理出來的實體模型,這種模型隻有固定數量的屬性,如果你想用多個模型中的屬性時,就會山路十八彎了,舉個例子

       如果把Entity Framework比作機關槍,那實體類的屬性就是子彈,每顆子彈隻能攻擊唯一對應的目标,在射擊過程中,隻要有一顆子彈攻擊的目标不存在,機槍就會卡殼(子彈決定目标?)。這時,Entity Framework成為了一堆廢鐵。

       為什麼不由目标決定子彈?出現什麼目标,用什麼子彈,既節省子彈,又不會卡殼。也就是根據查詢結果給對應的實體類屬性指派。難道這個新式武器也有設計缺陷,沒有考慮到這樣的應用場景?還是我們不會使用?

       首先,下載下傳Install-Package AutoMapper

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-- 無緣也成有緣(一)

              簡單的AutoMapper介紹完了,有沒有感覺到它的巨大作用呢?如果你的EF不能滿足你的程式實作,需要調用其他模型時,請考慮它把~

繼續閱讀