與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不能滿足你的程式實作,需要調用其他模型時,請考慮它把~