automapper 是.net 项目中针对模型之间转换映射的一个很好用的工具,不只提升了开发的效率还使代码更加简洁,固然也是开源的,https://github.com/AutoMapper,这很少作介绍,详细看,官网下面是介绍它在 .net core 项目中的使用git
1. 首先固然先引用 AutoMappergithub
- 你能够在NuGet中直接输入AutoMapper直接引用,也能够在控制台输入 Install-Package AutoMapperapp
2. 其次咱们要引用 AutoMapper 对依赖注入的一个扩展 Extensions.Microsoft.DependencyInjection函数
- 因为.net core 中自带依赖注入,咱们要用DI来注册咱们的Mapper类工具
3. 在Startup 类中找到 ConfigureServices 方法 引用咱们扩展中的方法spa
4. 在项目中建立一个映射配置类,能够项目中的任何文件夹下,扩展代码中是经过反射找出程序集中的全部映射配置.net
public class UserProfile : Profile { public UserProfile() { // Add as many of these lines as you need to map your objects CreateMap<UserInfo, UserInfoModel>(); CreateMap<UserInfoModel, UserInfo>(); } }
5. 在 Controller中用构造函数注入 IMapper code
private readonly IMapper _mapper; public UserInfoController(IUserInfoService userInfoService, IUnitOfWork unitOfWork, ILogger<UserInfoController> logger, IMapper mapper) { _unitOfWork = unitOfWork; _userInfoService = userInfoService; _logger = logger; _mapper = mapper; }
6. 最后就能够使用mapperblog
public IActionResult AddUser(UserInfoModel model) { if (!ModelState.IsValid) { return View(model); } var user = _mapper.Map<UserInfo>(model); //映射 var repoUser = _unitOfWork.GetRepository<UserInfo>(); repoUser.Insert(user); var r = _unitOfWork.SaveChanges(); //_userInfoService.AddUserInfo(); return Json(new MgResult() { Code = r > 0 ? 0 : 1, Msg = r > 0 ? "ok" : "SaveChanges失败!" }); }