[Practice Note] 3.Abp入门:Dto与实体模型的映射-AutoMapper

ABP框架动态菜单加载  最近项目中用ABP框架进行开发,将菜单提出到XML文件进行存储,方便后期菜单灵活组合,现将abp动态菜单加载部分代码贴出与大家分享: public class MyNavigationProvider : NavigationProvider { public override void SetNavigation(INavigationProviderCon... 阅读详情

Demo项目地址:https://download.youkuaiyun.com/download

新建实体模型与Dto对象传输模型

在这里插入图片描述

namespace ABPTest.EntityModel
{
    [Table("Common_Participant")] //数据库表名,会议参与者表
    public class Participant:FullAuditedEntity<int>
    {
    	//姓名
        public string Name { get; set; }
        //年龄
        public int Age { get; set; }
        //性别 1-Male 2-FeMale
        public int Sex { get; set; }
        //忽略字段,后面用到
        public string Ignore { get; set; }
        //备注
        public string Remark { get; set; }
    }
}

添加完实体在EntityFramwork中的Context上下文类中加入Participant实体,然后数据迁移!不清楚操作,可以参考之前的篇章 数据迁移

接下来我们添加Dto传输对象

  1. AddParticipantDto.cs
  2. GetParticipantDto.cs

在这里插入图片描述

namespace ABPTest.Participant.Dto
{
	//[AutoMapFrom(typeof(EntityModel.Participant))]  这段意味着实体自动映射到Dto模型,下面的自定义映射代码可以删除
    public class AddParticipantDto
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string SexName { get; set; }
        public string Ignore { get; set; }
        public string Note { get; set; }
    }
}

在Application层新建Participant文件,Dto文件!在Dto文件中新建上面的两个Dto类,下面的两个cs文件是接口与实现类,在下面测试使用!

其中我将 GetParticipantDto.cs的定义与实体定义一致

AbpAutoMapper配置映射关系

在这里插入图片描述

cfg.CreateMap<Participant.Dto.AddParticipantDto, EntityModel.Participant>()
                //Dto映射实体前,Dto修改
                .BeforeMap((s, t) => s.Name = "BeforeMap-" + s.Name)
                //Dto映射实体后,实体修改
                .AfterMap((s, t) => t.Name = t.Name + "-AfterMap")
                //条件映射,针对目标字段
                .ForMember(dest => dest.Age, opt => opt.Condition(src => src.Age >= 10 && src.Age <= 110))
                //忽略映射,针对目标字段
                .ForMember(t => t.Ignore, opt => opt.Ignore())
                //字段名不一致映射
                .ForMember(t => t.Remark, opt => opt.MapFrom(_ => _.Note))
                //字段名、类型不一致处理映射
                .ForMember(t => t.Sex, opt => opt.MapFrom(_ => _.SexName == "Male" ? 1 : 2));
                //实体映射Dto
                cfg.CreateMap<EntityModel.Participant, Participant.Dto.GetParticipantDto>();
              

编写上面讲到的接口和实现类代码,测试

namespace ABPTest.Participant
{
    /// <summary>
    /// 
    /// </summary>
    public interface IParticipantAppService:IApplicationService
    {
        /// <summary>
        /// 新增参与者
        /// </summary>
        /// <param name="pa"></param>
        void AddParticipant(AddParticipantDto pa);
        /// <summary>
        /// 获取所有者信息
        /// </summary>
        /// <returns></returns>
        GetParticipantDto GetOneParticipant();

    }
}
namespace ABPTest.Participant
{
    //[AbpAuthorize]  这里先去掉abp的授权校验,方便测试
    public class ParticipantAppService : ABPTestAppServiceBase, IParticipantAppService
    {
        public IRepository<EntityModel.Participant, int> _participantRepository;
		//依赖注入
        public ParticipantAppService(IRepository<EntityModel.Participant, int> par)
        {
            _participantRepository = par;
        }

        public void AddParticipant(AddParticipantDto pa)
        {
            var p = ObjectMapper.Map<EntityModel.Participant>(pa);
            if (p == null)
                return;
            _participantRepository.Insert(p);
        }

        public GetParticipantDto GetOneParticipant()
        {
            var data = _participantRepository.GetAll().FirstOrDefault();

            var result = ObjectMapper.Map<GetParticipantDto>(data);

            return result;
        }
    }
}

接口与实现类必须已***AppService结尾

完成后,设置web项目为启动项启动!

post调用新增方法,post地址:http://localhost:端口/api/services/app/participant/AddParticipant
其中 /api/services/app是固定的abp动态api地址,后面的分别是 /Service名称/内部方法

post调用查询方法,post地址:http://localhost:端口/api/services/app/participant/GetOneParticipant

接下来就可以自己修改post对象内容测试

如果对api测试有疑问的,可以参考详细篇章: abp集成swaggerui调试api

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.csdn.net/mtl1994

ABP学习 之 如何添加API

一个后端系统最重要的当然是提供API给前端调用。那么应用ABP模板的Project,应该如何添加API呢?

DinoFong的专栏 1523

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

abp.net core框架 数据传输模型Dto、实体模型Entity、表字段 相关映射

先说下写这篇文章的初衷,让实体和表对应字段映射,数据传输模型dto与实体模型对应字段映射; 情况如下 1、我的实体模型Entity继承了另外一个实体类接口,目前实体模型Entity跟数据库字段对应不上,通过如下配置,匹配映射: 文件结构如下: 配置解决方法: 第一步:在EntityFrameworkCore,创建文件夹EntityMapper,下面创建实体映射文件ExpertMap。 代码如下...

qq_31971935的博客 1980

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ABP学习实践(十三)--数据传输对象、实体、数据库表的映射

ABP框架中使用了数据传输对象和实体的概念,而实体一般又是与数据库的表结构相对应的。在ABP框架中可以分别为数据传输对象DTO与实体Entity、实体Entity与数据库表Table建立映射关系,既可以减少一定的编码工作量,也能降低数据传输对象、实体与数据库表之间的耦合性。 一.对象映射–数据传输对象与实体之间的映射 在ABP框架中,数据传输对象(Data Transfer Objects)也就是...

lordwish的专栏 2739

SpringCloud2025+SpringBoot3.5.0动态路由503问题排查与负载均衡依赖解析

本文详细排查了SpringCloud 2025与SpringBoot 3.5.0环境下,Spring Cloud Gateway动态路由返回503错误的根本原因。核心问题在于新版网关未默认集成负载均衡器,导致无法解析lb://服务名。通过对比静态路由与动态路由,定位到需显式引入spring-cloud-starter-loadbalancer依赖,并提供了完整的解决方案与最佳实践配置。

s3t4u的博客 504

在Spring开发中将DTO 映射到 Entity 的三种常用方式

在 Spring 开发中,将 DTO(数据传输对象)映射到 Entity(实体类)是常见需求,特别是在分层架构中(如 Controller、Service、Repository)。以下是基于 UserEntity, RoleEntity, UserDTO, UserController, UserService, 和 UserRepository 的示例,展示几种常用的 DTO 到 Entity 映射方式,包括手动映射、Spring 的 BeanUtils、以及 MapStruct 等工具的使用场景和实现。

yuxzlucy的博客 741

R链式中介:如何一次性生成4个变量所有可能的链式中介结果?(含结果解读与粗略作图)#bruceR#ggplot2

一次性生成4个变量所能生成的24种链式中介并作图

weixin_64183017的博客 3236

【ELF2学习板】基于OpenMP与RK3588多核架构优化FFTW的并行计算效率

本文详细介绍了如何在ELF2学习板上利用OpenMP与RK3588多核架构优化FFTW的并行计算效率。通过编译支持OpenMP的FFTW库、合理设置线程绑定与调度策略,以及内存访问优化等技巧,显著提升了FFT计算的性能。实测数据显示,多核并行优化可使4096点FFT计算速度提升一倍以上,特别适合信号处理、图像分析等高性能计算场景。

weixin_30352645的博客 607

(精华)2020年8月22日 ABP vNext DTO在应用层的使用

我们继续应用层的开发,首先创建负责在应用层和展示层之间传递数据的对象,也就是DTO。 使用DTO的原因 为什么需要DTO呢?有如下几个原因。 隔离领域层与表示层,使领域层和表示层可以独立演化,互相不受影响。 数据隐藏,领域层的某些数据需要对表示层隐藏(比如用户密码),在定义DTO时,可以不设置隐藏字段的映射,实现数据隐藏。DTO只返回表示层需要的数据,不多也不少。 避免序列化问题。领域对象中会带有循环引用,比如诗人Poet会引用诗Poems,而诗Poem中又引用了诗人Poet,这种循环引用在序列化时会出现

愚公智库 49万+

jane street market prediction 冠军方案 奇巧淫技与topline链接整理(3/3)

目录前言将income 作为loss(优化目标)读取数据,定义优化目标模型训练与微调提交结果多目标学习Topline整理AE+MLP (rank10)Current 17th solution: Ensembles of deep (49 layer) MLPsmixup augmentation: a way to learn from trades with weight=0 (rank4)My (perhaps) over-complicated LSTM solutionCurrent 62nd .

weixin_51484067的博客 2640

Spring Boot DTO 到实体映射

依赖项,用于使用 Spring MVC 构建 Web 应用程序。创建 Spring 启动应用程序>>在 Spring 工具套件中创建 Spring 启动应用程序。有许多不同的方法可以创建一个 Spring 启动应用程序,您可以按照以下文章创建一个 –在春季启动中,有很多不同的方法可以将DTO映射到实体,反之亦然,我们可以使用。依赖项用于使用模型映射器将 DTO 映射到实体以及将实体映射到 DTO。按照完整的文章了解如何使用模型映射器将 DTO 映射到实体对象。添加 maven 依赖项。并添加以下依赖项 –

allway2的博客 1748

Halcon实战:基于图像清晰度自动筛选最佳对焦图片

本文详细介绍了如何使用Halcon实现基于图像清晰度的自动筛选最佳对焦图片技术。通过分析灰度值统计和标准差等核心指标,结合实战代码示例,帮助开发者高效处理工业检测中的对焦问题,提升自动化检测的准确性和效率。

weixin_27015733的博客 440

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 214

ABP—对象之间的映射

前言 什么是对应之间的映射? 两个实体中只有一个实体指向另一个实体(知道该关系的存在),而另一实体没有指向这个实体(另一实体不知道该关系的存在) 举个很简单的例子:两个对象(类)具有相似或相同的属性,它们之间要互相映射,其实这项工作重复且无聊的工作 比如我们的Person对象 和 一个和它很相似的 TestPersonDto对象 [Table("Person")] pu...

wangwengrui40的博客 2610

3、固定翼无人机模型解析

本文详细解析了固定翼无人机的动力学模型与纵向模型,涵盖位置、速度、角度及角速度的变化率方程,并介绍了力和力矩的计算方法以及气动系数的表达式。通过关键参数分析,探讨了速度、迎角和倾斜角对飞行性能的影响。文章还展示了模型在编队飞行和任务规划中的应用,并提出了参数优化与先进控制策略等优化思路,为无人机飞行控制系统设计提供了理论基础。

gaochao的博客 240

DTO(数据传输对象)功能

1、用来绑定表现层中的数据 2、是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索的数据。数据传输对象与数据交互对象或数据访问对象之间是一个不具备有任何行为除了存储和检索的数据。(访问和存取器) 3、表现层与应用层之间是通过数据传输对象(DTO)进行交互的,数据传输对象是没有行为的POCO对象,它 的目的只是为了对领域对象进行数据封装,实现层与层之间的数据传...

缺钙的蜗牛 1917

华南理工大学-大学物理实验-不良导体热导率测量

不良导体热导率测量 引言 导热系数(又叫热导率)是反映材料热性能的重要物理量。热传导是热交换的三种(热传导、对流和辐射)基本形式之一,是工程热物理、材料科学、固体物理及能源、环保等各个研究领域的课题。材料的导热机理在很大程度上取决于它的微观结构,热量的传递依靠原子、分子围绕平衡位置的振动以及自由电子的迁移。在金属中电子流起支配作用,在绝缘体和大部分半导体中则以晶格振动起主导作用。因此,某种材料的导热系数不仅与构成材料的物质种类密切相关,而且还与材料的微观结构、温度、压力及杂质含量相联系。在科学实验和工程设计

mohen_777的博客 872

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ABP CORE 通过实体类实现数据库表和DTO

1.下载ABP Code Power Tools by 52abp.com,地址 https://marketplace.visualstudio.com/items?itemName=werltm.52ABPCodeGenerator 2.在ABP.CORE中建立实体类,如图: 实体类如下 public class Book : Entity&lt;long&gt; {...

张峰的博客 3211

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ABP官方文档翻译 2.7 对象到对象的映射

对象到对象的映射 介绍 IObjectMapper接口 AutoMapper集成 安装 创建映射 自动映射属性 自定义映射 MapTo扩展方法 单元测试 预定义映射 LocalizeableString->String 注入IMapper 介绍   映射一个相似的对象到另一个对象是常有的事情。因为两个对象(类)有相似/相...

weixin_33743880的博客 223

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ABP入门系列(2)——领域层创建实体

ABP入门系列目录——学习Abp框架之实操演练 这一节我们主要和领域层打交道。首先我们要对ABP的体系结构以及从模板创建的解决方案进行一一对应。网上有代码生成器去简化我们这一步的任务,但是不建议初学者去使用。 一、首先来看看ABP体系结构 领域层就是业务层,是一个项目的核心,所有业务规则都应该在领域层实现。 实体(Entity): 实体代表业务领域的数据和操作,在实践中,通过用来映射成数据库表。

圣杰 4541

ABP官方文档(十三)【对象之间的映射】

2.7 ABP公共结构 - 对象之间的映射2.7.1 简介我们通常需要在近似的对象之间进行映射处理。这是一个重复且枯燥无味的工作,通常来说两个需要相互映射的对象之间有近似的或者相同的属性。思考一下这样一个案例:应用服务的方法:public class UserAppService : ApplicationService { private readonly IRepository<User

极客神殿 4237

DTO和POJO实体类之间值映射

package cn.test.util; import java.lang.reflect.Method; import java.util.List; public class AutoMapper { public static void mapping(TSource source,TDestination destination) { Method[] srcMetho

生面别开 5470

初识ABP vNext(5):ABP扩展实体

点击上方蓝字&#34;小黑在哪里&#34;关注我吧扩展实体路由整理前言上一篇实现了前端vue部分的用户登录和菜单权限控制,但是有一些问题需要解决,比如用户头像、用户介绍字段目前还没有,下...

dotNET跨平台 788
上一篇: [Practice Note] 2.Abp入门:DDD实体模型设计,数据迁移
下一篇: [Practice Note] 4.Abp入门:应用层实现简单的业务操作以及工作单元使用
Gen??
博客等级 码龄7年 24粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值