记在WEBAPI中AutoMapper的初使用方法
很早就听说AutoMapper了。这些天一直在写api接口,发现之前的类型转换有点问题,就想到了用AutoMapper。用作DTO转换工具。 废话不多说,直接开些代码
首先 在Vs中找到 工具---NuGet包管理器-----控制台。选中要安装到那个项目中,输入Install-Package AutoMapper。如果安装提示错误,请重新卸载安装NuGet。
安装成功之后。目前是最新版本的6.1.配置AutoMapper。在项目中新建类似这样的目录。首先说说Configure文件,这个当然是配置文件了。这里推荐使用AutoMapper的静态初始化方法配置实体的映射。
/// <summary> /// AutoMapper配置 /// </summary> public class Configuration { public static void Configure() { Mapper.Initialize(cfg => { cfg.AddProfile<StoreProfile>(); cfg.CreateMap<Model.User,Api.Result.User>();//从Model.User映射到Api.Result.User }); } }
对象实体间的映射配置可以直接用map映射,也是通过配置文件的形式。
配置文件的写法也很简单,通过配置文件的方式,便于我们很好的分类映射。比如上面的StoreProfile就是配置商城中实体间的映射的。
public class StoreProfile:Profile { public StoreProfile() { CreateMap<Model.Store.Product, Api.Result.Store.Product>();//从Model.Store.Product中映射值到Api.Result.Store.Product } }
注意这里的类要继承Profile。在构造函数中我们可以写实体间的映射。多个映射也是同样的写法。这样就完成了通过配置文件的形式进行映射。注意有个坑,如果映射的类中存在另外一个类,而这个类为在AutoMapper中进行映射是会报错。
配置好之后怎么用呢。
var list=New List<Model.Store.Product>(); var result= Mapper.Map<List<<Api.Result.Store.Product>>(list);//这样就完成了转换,得到我们api中的Product列表
是不是很简单的。对于单个映射,写法更简答了,var model=Mapper.Map<转换后的类型>(转换前的实体);
最后在Gloable.ASPX中的应用程序启动事件中加入 AutoMapper.Configuration.Configure();是不是很简单呢。目前只是对应源实体和目的实体字段名称一一对应的情况,对于复杂清空,请期待。