AutoMapper 全域設定

Aug 6, 2014

2 mins read

AutoMapper可以把物件的對應設定集中在一個設定檔裡面,然後用Profile來做群組分類 用一個簡單的MVC網站來做例子
首先是HomeModel物件
public class HomeModel
{
    public int ModelId { get; set; }
    public string ModelName { get; set; }
}
再來是HomeViewModel物件
public class HomeViewModel
{
    public int ViewModelId { get; set; }
    public string ViewModelName { get; set; }
}
接下來在App_Start裡面新增一個AutoMapperConfig檔案
public class AutoMapperConfig
{
    public static void Configure()
    {
        Mapper.Initialize(x =>
            {
                x.AddProfile<HomeProfile>();
            });
    }
private class HomeProfile : Profile
{
    protected override void Configure()
    {
        Mapper.CreateMap&lt;HomeModel, HomeViewModel&gt;()
            .ForMember(dest =&gt; dest.ViewModelId, opt =&gt; opt.MapFrom(src =&gt; src.ModelId))
            .ForMember(dest =&gt; dest.ViewModelName, opt =&gt; opt.MapFrom(src =&gt; src.ModelName));

        Mapper.CreateMap&lt;HomeViewModel, HomeModel&gt;()
            .ForMember(dest =&gt; dest.ModelId, opt =&gt; opt.MapFrom(src =&gt; src.ViewModelId))
            .ForMember(dest =&gt; dest.ModelName, opt =&gt; opt.MapFrom(src =&gt; src.ViewModelName));
    }
}

}

然後在Global.asax中呼叫就行了
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        AutoMapperConfig.Configure();
    }
}

Sharing is caring!