iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何理解.NET Core Dto映射
  • 503
分享到

如何理解.NET Core Dto映射

2023-06-05 10:06:13 503人浏览 独家记忆
摘要

如何理解.net core Dto映射,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们假设一个场景, 采用EF Core+Web Api, 这时候可能会出现E

如何理解.net core Dto映射,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

我们假设一个场景, 采用EF Core+Web Api, 这时候可能会出现EF Core中的Entity Model和在项目中使用的Model之间对应关系出现偏差, 如果使用属性意一一对应, 不免会有大量的工作量

好了,接下来直接上代码来说明。

EntityModels.Employee.cs

public class Employee{    public Guid Id { get; set; }    public Guid CompanyId { get; set; }    public string EmployeeNo { get; set; }    public string FirstName { get; set; }    public string LastName { get; set; }    public Gender Gender { get; set; }    public DateTime DateOfBirth { get; set; }    public Company Company { get; set; }}

Models.EmployeeDto.cs

public class EmployeeDto{    public Guid Id { get; set; }    public Guid CompanyId { get; set; }    public string EmployeeNo { get; set; }    public string Name { get; set; }    public string GenderDisplay { get; set; }    public int Age { get; set; }}

我们可以观察到, 两个实体之间有很多不同的地方, 比如名字拆分啊, 出生日期和年龄啊等等, 我之前的做法就是硬生生手写代码转换, 但是经过学习大佬们的代码, 发现了一个类库, 在此算是记录一下吧

AutoMapper.Extensions.Microsoft.DependencyInjection

可以通过NuGet安装,使用的时候也非常简单, 建立Profile文件夹, 新建一个EmployeeProfile类, 继承于Profile。

public class EmployeeProfile: Profile{    public EmployeeProfile()    {        CreateMap()            .FORMember(dest => dest.Name,                opt => opt.MapFrom(src => $"{src.FirstName} {src.LastName}"))            .ForMember(dest => dest.GenderDisplay,                opt => opt.MapFrom(src => src.Gender.ToString()))            .ForMember(dest => dest.Age,                opt => opt.MapFrom(src => DateTime.Now.Year - src.DateOfBirth.Year));    }}

在使用的时候只需要这样, 注入mapper, 然后就是很简单的操作了, 简直了, 功能非常强大!!!

[apiController][Route("api/companies/{companyId}/employees")]public class EmployeesController: ControllerBase{    private readonly IMapper _mapper;    private readonly ICompanyRepository _companyRepository;    public EmployeesController(IMapper mapper, ICompanyRepository companyRepository)    {        _mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));        _companyRepository = companyRepository ?? throw new             ArgumentNullException(nameof(companyRepository));    }    [HttpPost]    public async Task<1actionresult>        CreateEmployeeForCompany(Guid companyId, EmployeeADDDto employee)    {        if (!await _companyRepository.CompanyExistsAsync(companyId))        {            return NotFound();        }        var entity = _mapper.Map(employee);        _companyRepository.AddEmployee(companyId, entity);        await _companyRepository.SaveAsync();        var dtoToReturn = _mapper.Map(entity);        return CreatedAtRoute(nameof(GetEmployeeForCompany), new        {            companyId = companyId,            employeeId = dtoToReturn.Id        }, dtoToReturn);    }}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何理解.NET Core Dto映射

本文链接: https://www.lsjlt.com/news/242380.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解.NET Core Dto映射
    如何理解.NET Core Dto映射,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们假设一个场景, 采用EF Core+Web Api, 这时候可能会出现E...
    99+
    2023-06-05
  • 如何理解.NET的反射
    这期内容当中小编将会给大家带来有关如何解.NET的反射,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。反射反射提供了封装程序集、模块和类型的对象(Type  类型)。可以使用反射动态创建类型的实例...
    99+
    2023-06-17
  • Entity Framework Core如何实现表名映射
    小编给大家分享一下Entity Framework Core如何实现表名映射,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!表名映射我们知道:如果是在默认情况下,使用EFCore Code First的方...
    99+
    2023-06-29
  • Entity Framework Core如何更新时间映射
    这篇文章主要介绍了Entity Framework Core如何更新时间映射,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。时间字段在真实的开发中,为了跟踪...
    99+
    2023-06-29
  • ASP.NET Core如何使用AutoMapper实现实体映射
    这篇文章将为大家详细讲解有关ASP.NET Core如何使用AutoMapper实现实体映射,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言在实际的项目开发过程中,我们使用各种ORM框架可...
    99+
    2023-06-29
  • .NET CORE如何鉴权
    本篇内容主要讲解“.NET CORE如何鉴权”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“.NET CORE如何鉴权”吧!基础信息1.什么是鉴权授权?鉴权是验证用户是否拥有访...
    99+
    2023-06-29
  • ASP.NET Core扩展库之实体映射使用详解
    目录一、启用二、配置自定义转换逻辑三、使用四、通过特性指定属性映射关系五、拷贝六、示例在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,...
    99+
    2024-04-02
  • .NET中实现对象数据映射示例详解
    目录前言示例Mapster 使用总结前言 对象数据映射即将一个对象的数据根据特定规则批量映射到另一个对象中,减少手工操作和降低人为出错率。如将 DTO ...
    99+
    2022-11-13
    .NET对象数据映射 .NET数据映射
  • .Net Core如何实现限流
    小编给大家分享一下.Net Core如何实现限流,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、环境vs2019.Net Core 3.1引用 AspNetCo...
    99+
    2023-06-20
  • 如何定制Hibernate映射
    这篇文章主要介绍“如何定制Hibernate映射”,在日常操作中,相信很多人在如何定制Hibernate映射问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何定制Hibernate映射”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • php如何实现映射
    小编给大家分享一下php如何实现映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!映射映射,或者射影,在数学及相关的领域经常等同于函数。基于此,部分映射就相当于部...
    99+
    2023-06-06
  • Hibernate如何映射文件
    这篇文章给大家分享的是有关Hibernate如何映射文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于JPA是不需要配置的,代码里面已经包括了注释,所以下面附上Hibernate映射文件,为了使数据库里面更清...
    99+
    2023-06-17
  • .Net Core如何授权认证JWT
    这篇文章主要讲解了“.Net Core如何授权认证JWT”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net Core如何授权认证JWT”吧!一、前言现在越来越多的项目...
    99+
    2023-07-02
  • SpringMVC详解如何映射请求数据
    目录1.获取参数值1.说明2.应用实例3.获取http请求消息头2.获取 javabean 形式的数据1.使用场景说明2.应用实例3.使用注意事项3.获取Servlet API1.应...
    99+
    2024-04-02
  • 如何理解.asmx处理程序提供的XML映射功能
    本篇文章为大家展示了如何理解.asmx处理程序提供的XML映射功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。将 XML映射到对象在 WebMehod 处理程序确定了要调用的方法之后,它需要将 X...
    99+
    2023-06-18
  • Python中如何将多个映射合并为单个映射
    这篇文章将为大家详细讲解有关Python中如何将多个映射合并为单个映射,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们有多个字典或映射,想在逻辑上将它们合并为一个单独的映射结构,以此执行一...
    99+
    2023-06-02
  • spring-mvc中如何实现映射处理器
    这篇文章主要介绍spring-mvc中如何实现映射处理器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.简析映射处理器在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了...
    99+
    2023-06-17
  • 怎么理解MyBatis中的JdbcType映射
    这篇文章主要讲解了“怎么理解MyBatis中的JdbcType映射”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解MyBatis中的JdbcType映...
    99+
    2024-04-02
  • csf ip端口如何映射
    本篇内容介绍了“csf ip端口如何映射”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1,DNAT用法:  IPx|*|...
    99+
    2023-06-27
  • linux如何映射共享盘
    在Linux中,可以通过以下步骤来映射共享盘:1. 打开终端窗口。2. 创建一个用于挂载共享盘的目录。可以使用以下命令创建目录:```shellsudo mkdir /mnt/share```3. 使用以下命令来挂载共享盘:```she...
    99+
    2023-08-11
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作