# AutoMapper在asp.netcore中的使用
automapper 是.net 項目中針對模型之間轉換映射的一個很好用的工具,不僅提高了開發的效率還使代碼更加簡潔,當然也是開源的,https://github.com/AutoMapper,這不多做介紹,詳細看,官網下面是介紹它在 .net core 項目中的使用
1. 首先當然先引用 AutoMapper
- 你可以在NuGet中直接輸入AutoMapper直接引用,也可以在控制台輸入 Install-Package AutoMapper
2. 其次我們要引用 AutoMapper 對依賴注入的一個擴展 Extensions.Microsoft.DependencyInjection
- 由於.net core 中自帶依賴注入,我們要用DI來注冊我們的Mapper類
3. 在Startup 類中找到 ConfigureServices 方法 引用我們擴展中的方法
4. 在項目中創建一個映射配置類,可以項目中的任何文件夾下,擴展代碼中是通過反射找出程序集中的所有映射配置
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
private readonly IMapper _mapper; public UserInfoController(IUserInfoService userInfoService, IUnitOfWork unitOfWork, ILogger<UserInfoController> logger, IMapper mapper) { _unitOfWork = unitOfWork; _userInfoService = userInfoService; _logger = logger; _mapper = mapper; }
6. 最后就可以使用mapper
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失敗!" }); }
本文永久更新地址:http://siyouku.cn/article/6859.html
asp.net core 開發框架:https://github.com/2014fighting/CodeFrame.Web.git