在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射

AutoMapper 使用手册以及扩展 可以看到,映射后,dto 中两个元素的类型,一个是 EmployeeDto,一个是 EmployeeDto2,即实现了父类映射到父类,子类映射到子类。/// 数据源的成员变量的命名规则。/// 数据源的成员变量的命名规则。/// new PascalCaseNamingConvention() 帕斯卡命名规则(每个单词的首字母大写) 阅读详情

一、从 NuGet 安装 AutoMapper

在使用 AutoMapper 时,核心的包是 AutoMapper 和 AutoMapper.Extensions.Microsoft.DependencyInjection。

PM> Install-Package AutoMapper
PM> Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

二、添加 Entity类 和 Resource类

在项目添加 Post类 和 Resource类。

	// Entity类
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime LastModified { get; set; }
    }
	
	// Resource类
    public class PostResource
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime UpdateTime { get; set; }
    }

三、添加一个 Profile文件,配置映射关系

随后我们需要继承Profile类来配置映射关系

	public class MappingProfile: Profile
	{
		//从Post到PostResource的映射
		CreateMap<Post, PostResource>()
			// 对名字不同的字段配置映射
			.ForMember(dest => dest.UpdateTime, opt => opt.MapFrom(src => src.LastModified));;
		//从PostResource到Post的映射,此处没有对名称不同的字段进行映射
		CreateMap<PostResource, Post>();
	}

四、在Startup中对AutoMapper进行注册

在Startup类的ConfigureServices方法中进行注册

	services.AddAutoMapper();

注册以后会自动找到MappingProfile类。

五、在项目中使用AutoMapper进行映射

示例如下:

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly MyContext _myContext;
        private readonly IMapper _mapper;

        public ValuesController(MyContext myContext, IMapper mapper)
        {
            _myContext = myContext;
            _mapper = mapper;
        }

        [HttpGet]
        public ActionResult<IEnumerable<string>> Get(int id)
        {
            Post post = _myContext.Posts.Find(id);
            PostResource postResource = _mapper.Map<Post, PostResource>(post);

            List<Post> posts = _myContext.Posts.ToList();
            IEnumerable<PostResource> postResources = _mapper
            	.Map<IEnumerable<Post>, IEnumerable<PostResource>>(posts);
            return new string[] { "value1", "value2" };
        }
    }


参考文档

.NET分层架构实战:解耦Core与可测可换的设计哲学 在.NET应用开发中,分层架构是实现高内聚、低耦合的基础范式。其核心原理在于通过接口抽象隔离业务逻辑与基础设施,借助依赖倒置和IoC容器管理生命周期,从而提升代码可测试性、可替换性与演进韧性。这种设计不仅支撑单元测试免数据库、免Web服务器运行,更使ORM切换(如NHibernate→EF Core)、部署环境迁移(SQL Server→SQLite→PostgreSQL)成为配置级操作。典型应用场景涵盖教育类SaaS系统重构、遗留WebForms项目渐进现代化,以及面向云原生的微服务化演进。本文以2009 阅读详情

相关推荐

AutoMapper.Extensions.Microsoft.DependencyInjection

Microsoft.Extensions.DependencyInjection的AutoMapper扩展 扫描程序集并: 将配置文件添加到映射配置 向容器添加值解析器,成员值解析器,类型转换器。 要与IServiceCollection实例和一个或多个程序集一起使用,请执行以下操作: services . AddAutoMapper ( assembly1 , assembly2 /* , ... */ ); 或标记类型: services . AddAutoMapper ( type1 , type2 /* , ... */ ); 这将注册AutoMapper: 作为MapperConfiguration的单例 作为IMapper的瞬时实例 ITypeConverter实例为瞬态 IValueConverter实例为瞬态 IValueResolver实例为瞬态 IMem

.Net Core 学习——AutoMapper

引入AutoMapper的包: install-package AutoMapper install-packageAutoMapper.Extensions.Microsoft.DependencyInjection Profile的用法:   Profile提供了一个命名的映射类,所有继承自Profile类的子类都是一个映射集合。这里我们创建一个UserProfile继承P...

Abbey_qi的博客 358

StructureMap.Microsoft.DependencyInjection, StructureMap支持 Microsoft.Extensions.DependencyInjection.zip

StructureMap.Microsoft.DependencyInjection, StructureMap支持 Microsoft.Extensions.DependencyInjection 用于 ASP.NET 核心的 StructureMap集成 这里存储库包含两个NuGet软件包的来源:StructureMap.AspNetCoreStructureMap.Microsoft.DependencyInjecti

【C#】使用AutoMapper-看这篇就够了

1.基本配置 Profile配置 public class OrganizationProfile : Profile { public OrganizationProfile() { CreateMap<Foo, FooDto>(); } } 使用: var configuration = new MapperConfiguration(cfg => { //cfg.CreateMap<Foo, Bar>(); cfg.AddProfile<

catshitone的专栏 4万+

Autofac.Extensions.DependencyInjection:Microsoft.Extensions.DependencyInjection.Abstractions(.NET Core依赖项注入抽象)中接口的Autofac实现

Autofac.Extensions.DependencyInjection Autofac是Microsoft .NET的。 它管理类之间的依赖关系,以使应用程序随大小和复杂性的增长而保持易于更改的状态。 这是通过将常规.NET类视为。 请在此存储库中而不是在Autofac核心存储库中提交问题并请求对此软件包的请求。 ASP.NET Core入门 此快速IServiceProviderFactory{T}展示了如何使用ASP.NET Core支持的IServiceProviderFactory{T}集成来帮助您自动构建根服务提供者。 如果您想要更多的手动控制,。 请参考NuGet的Autofac.Extensions.DependencyInjection程序包。 在Program.Main方法(配置HostBuilder ,调用UseAutofac将Autofac挂接到启动管道

【智慧城市】GIS数据获取-获取道路/水路数据

【GIS数据获取】获取道路/水路数据

qq_16599281的博客 4749

AutoMapper.Extensions.Microsoft.DependencyInjection 使用指南

AutoMapper.Extensions.Microsoft.DependencyInjection 使用指南 1. 项目目录结构及介绍 本部分将概述AutoMapper.Extensions.Microsoft.DependencyInjection项目的基本结构及其各组件的功能简介。 AutoMapper.Extensions.Microsoft.DependencyInjection │ ...

gitblog_00549的博客 519

TexGen模型导出ABAQUS inp文件时纱线材料属性缺失?5分钟快速修复指南

本文针对TexGen模型导出ABAQUS inp文件时纱线材料属性缺失的问题,提供了快速修复指南。通过手动编辑inp文件或使用Python脚本自动补全材料属性,帮助复合材料仿真工程师高效解决问题。文章还介绍了TexGen导出前的预防性设置和ABAQUS中的验证技巧,确保仿真分析的准确性。

qsc901234的博客 248

ASP.NET Core开发实战:从入门到精通

ASP.NET Core作为微软推出的开源跨平台Web开发框架,采用模块化设计和中间件管道架构,显著提升了Web应用的性能和可扩展性。其核心原理基于依赖注入系统和轻量级HTTP服务器Kestrel,支持Windows、Linux和macOS多平台部署。在技术价值方面,ASP.NET Core的高性能特性使其请求处理能力可达Node.js的5倍,配合灵活的配置系统和强大的路由功能,特别适合构建现代化Web应用和微服务架构。实际应用场景涵盖电商平台、企业级应用和高并发API服务,通过内置的依赖注入容器和中间件管

weixin_34184561的博客 359

UM2 3D 打印机 DIY 实践 (2) 电路篇

涉及到的东西非常多,实际上后面还会讲到。主要部件清单: 主板 mega2560 + Ramps1.4 + LCD12864 各一张 42 x38mm x3,xyz 轴各一台 42 x23mm x1,用在挤出机 泰坦远程挤出机 x1 TMC2225 驱动板 x4, 替代a4988、TMC2208,静音效果好,性价比高 s-250-12v 20A开关电源 x1。功率必须足够大,宁可选大一点的 大功率 MOS 管,25A x1 NTC .

afeiqiang的专栏 3599

Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤)

本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。

weixin_29306571的博客 635

ASP.NET高性能高可伸缩架构实战:从单体到微服务的生产级演进

在现代Web系统中,高性能指单节点极致处理能力(如CPU/IO优化),高可伸缩性则强调资源线性扩展下的吞吐保障(如无状态设计、去中心化依赖)。二者共同构成大型ASP.NET应用稳定承载百万并发的核心能力。本文基于真实电商中台实践,深入解析缓存穿透防护、异步消息幂等、数据库读写分离兜底、领域驱动服务拆分等关键技术,覆盖从ASP.NET MVC单体演进到ASP.NET Core微服务的全路径。内容聚焦生产环境高频痛点——503错误频发、慢查询告警不断、发布需停服——提供可落地的调优策略与监控语义升级方案,适用于

lanmh的专栏 543

软件破解逆向安全(一)初识内存地址和偏移

工具:CE 内存:数字->存访在电脑中->内存 实例:如何修改植物大战僵尸阳光 内存搜索最核心:过滤数据 先用CE加载植物大战僵尸,如下图 我们可以看到目前我们的阳光数是50,我们尝试在ce里搜索精确数值,4 byte是int整数的表示。 我们发现有很多数据,尝试收集一个阳光变成75再次搜索: 我们发现就一个了,这时我们可以双击Value随便修改阳光的数值了。 这里我们说一下动态和静态地址 动态地址:临时用于存放数据的地址,黑色。特征:重新启动游戏地..

weixin_43781139的博客 2586

02.net6 常用第三方类库介绍

在 .NET 6 中,有许多常用的第三方类库可以用来增强和扩展你的应用程序。以下是一些常见的 .NET 6 的第三方类库:EF Core 是一个轻量级、可扩展和跨数据库的对象关系映射 (ORM) 框架,用于在应用程序中访问和操作数据库。AutoMapperAutoMapper 是一个对象映射库,用于简化对象之间的转换和映射操作。SerilogSerilog 是一个强大的日志库,提供了丰富的日志记录功能和灵活的配置选项。

qq_42574478的博客 1036

STM32项目实战_基于STM32F103的智能药箱设计与实现(硬件详解+软件逻辑+调试要点)

本文详细介绍了基于STM32F103的智能药箱设计与实现,涵盖硬件设计、软件逻辑和调试要点。项目核心功能包括精准提醒、药品管理和远程监控,采用STM32单片机作为主控,结合光电开关、蓝牙模块等实现智能化管理。文章还分享了电路图设计、程序优化及常见问题解决方案,为嵌入式开发爱好者提供实用参考。

weixin_28717683的博客 302

华为OD技术面八股文_C++_01

汇总华为OD技术面C++方向八股文真题,并提供详细解答。

qq_45776114的博客 1884

AutoMapper基本使用

导包 AutoMapper AutoMapper.Extensions.Microsoft.DependencyInjection 假如需要将Student映射为StudentCopy namespace WebApplication14 { public class Student { public string Name { get; set; } public int Age { get; set; } public string Sex

m0_47659279的博客 448

[Dify实战] 解决 Dify 导入 DSL 文件时报 “DSL 版本差异” 的兼容性问题

摘要:本文针对Dify开发者在导入.dsl文件时遇到的版本警告提示问题,分析其根源在于DSL文件与当前系统版本不一致。解决方案是通过导出当前Dify应用的DSL文件查看版本号,手动修改待导入文件的version字段以匹配。文章详细说明了操作步骤,并给出使用专业编辑器、避免修改其他字段等实用建议,帮助开发者规避版本不兼容问题,提升多模态AI应用开发效率。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 960

AutoMapper.Extensions.Microsoft.DependencyInjection 项目推荐

AutoMapper.Extensions.Microsoft.DependencyInjection 项目推荐 项目基础介绍和主要编程语言 AutoMapper.Extensions.Microsoft.DependencyInjection 是一个开源项目,主要用于在 .NET 应用程序中集成 AutoMapper 和 Microsoft.Extensions.DependencyInject...

gitblog_00730的博客 623

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

asp.net core automapper的使用

6.在控制中通过构造函数注入的方式调用automapper的map方法,完成实体转换。3.创建映射类需要继承automapper中的profile类。4.在program中注入automapper服务。1.安装automapper的nuget包。2.创建需要映射的类和转换后的类。

qq_41942413的博客 831

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

AutoMapper详解

简单来说,AutoMapper是以.NET(C#)语言开发的一个轻量的处理一个实体对象到另一个实体对象之间映射关系的组件库。开发人员需要做的是通过AutoMapper配置两个实体对象之间的一些映射关系。就可以直接实现映射关系的复用,提高开发效率,减少重复代码。为了降低现代开发框架的复杂度,往往需要做代码分层,分层之后,必然出现不同的数据承载对象VO、BO、Entity ,从设计的角度来说,VO、BO、Entity 的设计思路并不违反 DRY 原则,为了分层清晰、减少耦合,多维护几个类的成本也并不是不能接受的

李宥的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

automapper自动创建映射_.NET CORE 中使用AutoMapper进行对象映射

简介AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMapper uses a convention-based matching algorithm to match up source to destination values. AutoMapper is ...

weixin_34731836的博客 387

【C#】AutoMapper 使用手册

文章目录1 入门例子2 注册2.1 Profile3 配置3.1 命名约定3.2 配置可见性3.3 全局属性/字段过滤3.4 识别前缀和后缀3.5 替换字符4 调用构造函数5 数组和列表映射5.1 处理空集合5.2 集合中的多态6 方法到属性映射7 自定义映射8 扁平化映射8.1 IncludeMembers9 嵌套映射 本文基于 AutoMapper 9.0.0 AutoMapper 是一个对象-对象映射器,可以将一个对象映射到另一个对象。 官网地址:http://automapper.org/ 官方

guliang21的专栏 1627

1、AutoMapper简单介绍

官网:http://automapper.org/ 源码:https://github.com/AutoMapper/AutoMapper NUGET安装: PM> Install-Package AutoMapper AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DTO,一般用于ViewModel模式和跨 服务范畴。 AutoMapper给用户提供了便捷的配置API,就像使用约定来完成自动映射那样。 AutoMapper包含以下功能:...

whyrookie的博客 872
上一篇: .NET Core环境变量和用户秘钥实现开发中的数据安全
下一篇: .NET 中数据访问用的 DBHelper(Sql Server) 类
Upgrader
博客等级 码龄8年 23粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值