.NET CORE 中使用AutoMapper進行物件對映
概述
在網際網路產品中,前臺頁面可謂是變化莫測,今天是這個樣,明兒是那個樣。而Dto可以面向UI層,頁面不管怎麼變,Dto總是那麼靈活而不影響我們的服務端的主體業務,而我們的Model就更專注業務。
這樣一來,通過Dto我們實現了表現層與Model之間的解耦,表現層不引用Model層的東西。
在ASP.NET CORE中,我們可以使用AutoMapper來實現物件資料傳輸也就是Dto。
1、需要安裝如下兩個包,通過Nuget安裝即可:
AutoMapper
AutoMapper.Extensions.Microsoft.DependencyInjection //需要依賴注入AutoMapper,需要下載該包。
2、在Startup中新增AutoMapper:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//新增對AutoMapper的支援
services.AddAutoMapper();
}
3、建立AutoMapper對映規則,得告訴AutoMapper對映關係:
public class AutoMapperConfigs: Profile
{
//新增你的實體對映關係.
public AutoMapperConfigs()
{
//GoodsEntity轉GoodsDto.
CreateMap<GoodsEntity, GoodsDto>()
//對映發生之前
.BeforeMap((source,dto) => {
//可以較為精確的控制輸出資料格式
dto.CreateTime = Convert.ToDateTime(source.CreateTime).ToString("yyyy-MM-dd");
})
//對映發生之後
.AfterMap((source, dto) => {
//code ...
});
//GoodsDto轉GoodsEntity.
CreateMap<GoodsDto, GoodsEntity>();
}
}
4、大膽的使用AutoMapper吧,在你的Controller建構函式中注入你的IMapper:
[Produces("application/json")]
[Route("api/Goods")]
public class GoodsController : Controller
{
private readonly IMapper _mapper;
public GoodsController(IMapper mapper)
{
_mapper = mapper;
}
}
5、單個物件轉Dto:
[HttpGet]
[Route(nameof(GetGoods))]
public async Task<GoodsDto> GetGoods()
{
//模擬資料
var goods = new GoodsEntity() { Id = 1, Name = "商品1", Price = 23.25M };
//單個實體物件轉單個Dto物件.
var goodsDto = _mapper.Map<GoodsDto>(goods);
return goodsDto;
}
6、集合轉Dto集合:
[HttpGet]
[Route(nameof(GetGoodsList))]
public async Task<List<GoodsDto>> GetGoodsList()
{
//模擬資料
var goodsList = new List<GoodsEntity>()
{
new GoodsEntity(){ Id=1,Name="商品1",Price=23.25M,CreateTime=DateTime.Now },
new GoodsEntity(){ Id=2,Name="商品2",Price=21.25M,CreateTime=DateTime.Now },
new GoodsEntity(){ Id=3,Name="商品3",Price=20.25M,CreateTime=DateTime.Now },
new GoodsEntity(){ Id=4,Name="商品4",Price=19.25M,CreateTime=DateTime.Now },
};
//物件集合轉Dto集合.
var goodsDtos = _mapper.Map<List<GoodsDto>>(goodsList);
return goodsDtos;
}
注意
AutoMapper功能很強大,我所介紹的只是其冰川一角,有興趣的夥伴可以去AutoMapper官方文件深入學習。
如果有小夥伴覺得在使用AutoMapper都得在Controller的建構函式中進行注入一遍麻煩的話,AutoMapper也是支援這種對映方式如:Mapper.Map
歡迎加入.NET CORE/ASP.NET CORE 技術交流群,我們期待你的加入。
群號:702566187
相關文章
- ASP.NET Core 中的物件對映之 AutoMapperASP.NET物件APP
- 在.net中使用AutoMapper進行物件對映,物件相互轉,簡單方便APP物件
- .NET Core Dto對映(AutoMapper)APP
- 在 ASP.NET Core 專案中使用 AutoMapper 進行實體對映ASP.NETAPP
- .NET CORE AUTOMAPPER 對映一個類的子類APP
- Javascript - 物件對映automapper介紹JavaScript物件APP
- .net Core 使用AutoMapperAPP
- .NET Core 中AutoMapper的配置及使用APP
- .net core中使用AutomapperAPP
- 在Watir中進行物件對映(Object Map)的方法物件Object
- 基於 abp vNext 和 .NET Core 開發部落格專案 - 用AutoMapper搞定物件對映APP物件
- Util應用框架基礎(二) - 物件到物件對映(AutoMapper)框架物件APP
- .Net core 中 AutoMapper的應用APP
- ASP.NET.Core中使用AutoMapperASP.NETAPP
- 使用 SOS 對 Linux 中執行的 .NET Core 進行問題診斷Linux
- .Net Core中更高階的AutoMapper示例APP
- 【5min+】 物件對映只有AutoMapper?試試Mapster物件APP
- 基礎才是重中之重~AutoMapper為已有目標物件對映APP物件
- ASP.NET Core-自動對映ASP.NET
- .NET Core 中依賴注入 AutoMapper 小記依賴注入APP
- .net core3.1 AutoMapperAPP
- Redis OM .NET Redis物件對映框架Redis物件框架
- .net core 使用ConcurrentTest元件對方法進行壓力測試元件
- 【ASP.NET Core】動態對映MVC路由ASP.NETMVC路由
- .net core中使用jwt進行認證JWT
- asp.net core 3.1.x 中使用AutoMapperASP.NETAPP
- 在ASP.NET Core MVC 2.2 中使用AutoMapperASP.NETMVCAPP
- .NET Core 物件池的使用物件
- MongoDB via Dotnet Core資料對映詳解MongoDB
- .Net Core AutoMapper自定義擴充套件方法的使用APP套件
- AutoMapper在MVC中的運用05-對映中的忽略、處理null、多種對映轉換APPMVCNull
- .NET開發中合理使用物件對映庫,簡化和提高工作效率物件
- (精華)2020年7月3日 ASP.NET Core AutoMapper實現類的相互對映(工具版)ASP.NETAPP
- .Net Core中使用DiagnosticSource進行日誌記錄
- ASP.NET Core擴充套件庫之實體對映ASP.NET套件
- .net framework autoMapper使用FrameworkAPP
- iOS中對NSArray中自定義的物件進行排序iOS物件排序
- 在Java中對集合當中的物件進行排序Java物件排序