AutoMapper在asp.netcore中的使用


# 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM