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()
ASPCMS批量上傳內容{
// Add as many of these lines as you need to map your objects
CreateMap<UserInfo, UserInfoModel>();
CreateMap<UserInfoModel, UserInfo>();
}
}
5. 在 Controller中用構造函數注入 IMapper
1
2
3
4
5
6
7
8
9
10
private readonly IMapper _mapper;
public UserInfoController(IUserInfoService userInfoService,
IUnitOfWork unitOfWork, ILogger<UserInfoController> logger, IMapper mapper)
{
_unitOfWork = unitOfWork;
_userInfoService = userInfoService;
ASPCMS批量刪除關鍵詞 _logger = logger;
_mapper = mapper;
}
6. 最后就可以使用mapper
1
2
3
4
5
6
7
8
9
ASPCMS批量添加欄目10
11
ASPCMS批量添加產品 12
13
14
15
16
17
public IActionResult AddUser(UserInfoModel model)
{
if (!ModelState.IsValid)
ASPCMS批量更新文章 {
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://www.meyanliao.com/article/other/AutoMapperzaspnetcorezdsy.html