我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解.NET Core Dto映射

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解.NET Core Dto映射

如何理解.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(class="lazy" data-src => $"{class="lazy" data-src.FirstName} {class="lazy" data-src.LastName}"))            .ForMember(dest => dest.GenderDisplay,                opt => opt.MapFrom(class="lazy" data-src => class="lazy" data-src.Gender.ToString()))            .ForMember(dest => dest.Age,                opt => opt.MapFrom(class="lazy" data-src => DateTime.Now.Year - class="lazy" data-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);    }}

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解.NET Core Dto映射

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

下载Word文档

猜你喜欢

如何理解.NET Core Dto映射

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

如何理解.NET的反射

这期内容当中小编将会给大家带来有关如何解.NET的反射,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。反射反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑
2023-06-17

Entity Framework Core如何更新时间映射

这篇文章主要介绍了Entity Framework Core如何更新时间映射,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。时间字段在真实的开发中,为了跟踪数据的变化,一般会在
2023-06-29

Entity Framework Core如何实现表名映射

小编给大家分享一下Entity Framework Core如何实现表名映射,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!表名映射我们知道:如果是在默认情况下,使用EFCore Code First的方式生成的表名跟数据上
2023-06-29

ASP.NET Core如何使用AutoMapper实现实体映射

这篇文章将为大家详细讲解有关ASP.NET Core如何使用AutoMapper实现实体映射,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言在实际的项目开发过程中,我们使用各种ORM框架可以使我们快
2023-06-29

如何理解.asmx处理程序提供的XML映射功能

本篇文章为大家展示了如何理解.asmx处理程序提供的XML映射功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。将 XML映射到对象在 WebMehod 处理程序确定了要调用的方法之后,它需要将 X
2023-06-18

spring-mvc中如何实现映射处理器

这篇文章主要介绍spring-mvc中如何实现映射处理器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.简析映射处理器在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了
2023-06-17

mybatis驼峰映射不起效如何解决

如果mybatis的驼峰映射不起效,可能是因为以下原因:1. 配置文件中未开启驼峰命名规则:在mybatis配置文件(通常是`mybatis-config.xml`)中,确保以下配置项是正确的:```xml...```这个配置项会将数据库中
2023-09-11

core sync该如何理解

这篇文章跟大家分析一下“core sync该如何理解”。内容详细易懂,对“core sync该如何理解”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“core sync该如何理解”
2023-06-28

如何理解.Net事件

今天就跟大家聊聊有关如何理解.Net事件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。.NET 事件事件概述在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)
2023-06-17

如何理解反射

这篇文章主要介绍“如何理解反射”,在日常操作中,相信很多人在如何理解反射问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解反射”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!反射的思想及作用有反必有正,
2023-06-16

.Net Core读取文件时中文乱码如何解决

这篇文章主要介绍“.Net Core读取文件时中文乱码如何解决”,在日常操作中,相信很多人在.Net Core读取文件时中文乱码如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.Net Core读取文件
2023-06-29

如何解组 Pulumi auto.Result 对象结构或映射

php小编西瓜分享如何解组 Pulumi auto.Result 对象结构或映射。Pulumi 是一个跨云平台的基础设施即代码工具,它允许开发人员使用编程语言来定义和管理云基础设施。在使用 Pulumi 进行开发时,经常会遇到 auto.R
如何解组 Pulumi auto.Result 对象结构或映射
2024-02-10

ElasticSearch的映射在Python中如何定义和使用?(Python环境下,如何定义和管理ElasticSearch的映射?)

本指南详细介绍了如何在Python中定义和使用ElasticSearch映射。映射定义了索引中每个字段的类型和属性。使用mapping字典和put_mapping方法可以创建映射。使用bulk方法可索引文档,然后使用搜索查询根据映射的字段进行搜索。管理映射包括获取、更新和删除映射。最佳实践包括考虑数据类型、添加属性、使用嵌套类型、更新映射和利用工具。
ElasticSearch的映射在Python中如何定义和使用?(Python环境下,如何定义和管理ElasticSearch的映射?)
2024-04-02

Java中如何用内存映射处理大文件

本篇内容介绍了“Java中如何用内存映射处理大文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!package test; import
2023-06-17

docker端口映射后访问不了如何解决

如果你在Docker中映射了端口,但无法访问,请尝试以下步骤来解决问题:1. 确保Docker容器正在运行:通过运行`docker ps`命令,检查容器是否正在运行。如果容器已停止,请使用`docker start `命令启动它。2. 检查
2023-09-20

如何理解.Net异常处理

本篇文章给大家分享的是有关如何进行.Net异常处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。异常处理 可以使用 TryCatch 活动处理方法执行期间引发的异常。
2023-06-17

Elasticsearch分布式搜索的映射与类型管理(Elasticsearch如何管理分布式搜索的映射和类型?)

Elasticsearch使用分布式索引模型管理大量数据,其中分片具有自己的映射和类型。映射定义文档结构,决定数据存储和索引方式。类型是映射的逻辑分组,允许在同一索引中存储不同结构的文档。Elasticsearch提供了管理映射和类型的工具和API,如索引API、映射API和类型API。最佳实践包括保持映射简单一致,使用类型进行逻辑分组和定期审查和优化映射。
Elasticsearch分布式搜索的映射与类型管理(Elasticsearch如何管理分布式搜索的映射和类型?)
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录