最新要闻
- 史上最贵“蹦迪票”!神秘买家8万拍下椰树直播间蹦迪权:1秒单价2698元
- 每日快讯!这个“六一”我们让爱与欢乐“童”行|咸宁市第十七小学开展首届艺术节活动
- 女孩发视频吐槽房东 称其安装5级能耗导致电费超标
- “黄晓明救了我的手机”冲上微博热搜 感觉不如昆仑玻璃
- 69岁!赵雅芝晒新写真 气质优雅梦回白娘子:网友感慨这谁顶得住 环球速递
- 5月新能源销量分析:比亚迪“冠军”初显威 江湖再无“蔚小理”-世界头条
- 青春永驻 还能多活十年:天下真有如此好事?
- 泪目!老伴走后第二天浙大老教师又去捡垃圾了:为资助贫困学生
- 天天看点:美团单车怎么关锁还车视频(美团单车怎么关锁还车)
- 全球速看:身轻如燕玩光追 1080P甜品卡就选它!耕升RTX 4060 Ti踏雪显卡评测
- 每日热点:3D扫描效率剧增!NVIDIA新AI模型可将视频生成高精模型
- 实时焦点:vivo X100系列首发天玑9300:超大杯搭载骁龙8 Gen3
- 三地同时遭遇太罕见!专家谈辽宁龙卷风:持续30分钟较少见 世界讯息
- 支付宝“史诗级”更新!终于支持深色模式了:3步教你开启
- 真崎杏子r18_真崎杏子
- 一辆最多2万元!多地发放购车补贴,6月买车真是好时机?_当前热门
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
ASP.NET Core MVC 从入门到精通之自动映射(一) 环球热闻
随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启动运行,以及命名约定,创建控制器,视图,模型,接收参数,传递数据ViewData,ViewBag,路由,页面布局,wwwroot和客户端库,Razor语法,EnityFrameworkCore与数据库,HttpContext,Request,Response,Session,序列化,文件上传等内容,今天继续讲解ASP.NET Core MVC 中自动映射等相关内容,仅供学习分享使用。
手动映射
在实际应用中,随着程序复杂度越来越高,分层已经是必然趋势,对象的传递与映射,也变得很频繁。在小项目中,一般采用手动映射赋值,如:将StudentViewModel对象的属性值赋值给Student。手动映射如下所示:
(相关资料图)
1 [HttpPost] 2 public IActionResult Add(StudentViewModel studentViewModel) 3 { 4 var student = new Student() 5 { 6 Id = studentViewModel.Id, 7 Name = studentViewModel.Name, 8 Age = studentViewModel.Age, 9 Sex = studentViewModel.Sex,10 };11 studentService.Add(student);12 return View();13 }
手动映射需要逐个属性进行赋值,灵活度高,但也容易出错。如果项目中存在很多需要映射传递的地方,则工作量和复杂度也会随之增加。
自动映射快速入门
自动映射就是由程序自动匹配属性名并进行赋值。步骤如下:
1. 安装自动映射包
首先通过NuGet包管理器安装自动映射第三方库【AutoMapper.Extensions.Microsoft.DependencyInjection】,目前版本为12.0.1,如下所示:
2. 创建自动映射关系
创建自动映射关系类AutomapProfile,并继承自Profile,如下所示:
1 using AutoMapper; 2 using DemoCoreMVC.ViewModels; 3 using DemoCoreMVC.Models; 4 5 namespace DemoCoreMVC.Profiles 6 { 7 public class AutomapProfile:Profile 8 { 9 public AutomapProfile()10 {11 //创建映射关系12 CreateMap();13 }14 }15 }
3. 注册自动映射服务
在Program启动文件中,添加自动映射服务,在服务中添加映射关系类,如下所示:
1 builder.Services.AddAutoMapper(cfg =>2 {3 cfg.AddProfile();4 });5 //或者6 //builder.Services.AddAutoMapper(typeof(AutomapProfile));
4. 注入IMapper接口
在需要使用自动映射服务的地方注入IMapper服务,如控制器中,如下所示:
1 private readonly IMapper mapper;2 3 public StudentController(IStudentService studentService,IMapper mapper)4 {5 this.studentService = studentService;6 this.mapper = mapper;7 }
5. 调用映射方法
在需要映射的地方调用IMapper接口的Map方法,如下所示:
1 [HttpPost]2 public IActionResult Add(StudentViewModel studentViewModel)3 {4 var student = mapper.Map(studentViewModel);5 studentService.Add(student);6 return View();7 }
6. 自动映射示例
经过上述步骤,自动映射已经完成,经过测试如下所示:
多个关系映射文件
在实际应用中,会有很多对象需要映射,通常会根据不同的类型,创建多个关系映射类,则在项目启动注册自动映射服务时,需要加载多个映射类,如下所示:
1 builder.Services.AddAutoMapper(cfg =>2 {3 cfg.AddProfile();4 cfg.AddProfile ();5 });
也可以通过扫描程序集的方式加载映射文件,可以配置程序集名称,程序会自动扫描继承了Profile类的文件。如下所示:
1 builder.Services.AddAutoMapper(cfg =>2 {3 cfg.AddMaps("DemoCoreMVC");4 });
注意AddMaps参数配置的是程序集名称,而不是命名空间,程序集名称可通过项目属性获取,如下所示:
自动映射匹配
默认情况下,自动映射的数据源和目标的属性,必须要一致,才能进行映射,但是在实际应用中,属性名之间可能会存在差异,如书写格式【Class_Name和ClassName之间的差异】等,如果不加处理的话,默认是无法自动映射成功的。失败示例如下所示:
在映射时进行配置源的命名格式和目标命名格式,如下所示:
1 namespace DemoCoreMVC.Profiles 2 { 3 public class AutomapProfile:Profile 4 { 5 public AutomapProfile() 6 { 7 SourceMemberNamingConvention = new LowerUnderscoreNamingConvention(); 8 DestinationMemberNamingConvention = new PascalCaseNamingConvention(); 9 //创建映射关系10 CreateMap();11 }12 }13 }
注意:其中
SourceMemberNamingConvention :源类型成员命名规则Ex: SourceMemberNamingConvention = new LowerUnderscoreNamingConvention(); //下划线命名法DestinationMemberNamingConvention :目标类型成员命名规则Ex: cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention(); //帕斯卡命名法经过设置源类型和目标类型的命名规则后,则发现已经可以适配成功。如下所示:
经过测试,以下全局配置命名规则不生效,具体原因不知:
1 builder.Services.AddAutoMapper(cfg =>2 {3 cfg.AddProfile();4 cfg.SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();5 cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention();6 });
以上就是ASP.NET Core MVC从入门到精通之自动映射第一部分内容。旨在抛砖引玉,一起学习,共同进步。
关键词:
-
【环球时快讯】学习笔记——VMWare的使用和Windows的安装
2023-06-02一、VMware介绍1 1& 160;VMware即虚拟机软件,用于模拟计算机(虚拟机 客户机)实体机(是实实在
来源: ASP.NET Core MVC 从入门到精通之自动映射(一) 环球热闻
史上最贵“蹦迪票”!神秘买家8万拍下椰树直播间蹦迪权:1秒单价2698元
【环球时快讯】学习笔记——VMWare的使用和Windows的安装
【环球报资讯】鬼谷子劝世良言篇
Celery框架
19)事务 天天即时
我的第一个项目(十五) :完成数据保存功能(后端,改update)_当前关注
每日快讯!这个“六一”我们让爱与欢乐“童”行|咸宁市第十七小学开展首届艺术节活动
女孩发视频吐槽房东 称其安装5级能耗导致电费超标
“黄晓明救了我的手机”冲上微博热搜 感觉不如昆仑玻璃
69岁!赵雅芝晒新写真 气质优雅梦回白娘子:网友感慨这谁顶得住 环球速递
5月新能源销量分析:比亚迪“冠军”初显威 江湖再无“蔚小理”-世界头条
青春永驻 还能多活十年:天下真有如此好事?
泪目!老伴走后第二天浙大老教师又去捡垃圾了:为资助贫困学生
天天看点:美团单车怎么关锁还车视频(美团单车怎么关锁还车)
文心一言 VS 讯飞星火 VS chatgpt (29)-- 算法导论5.2 1题
世界速讯:人民银行营管部发文加强征信合规管理 要求对高发征信合规问题开展自查和整改
全球速看:身轻如燕玩光追 1080P甜品卡就选它!耕升RTX 4060 Ti踏雪显卡评测
每日热点:3D扫描效率剧增!NVIDIA新AI模型可将视频生成高精模型
实时焦点:vivo X100系列首发天玑9300:超大杯搭载骁龙8 Gen3
三地同时遭遇太罕见!专家谈辽宁龙卷风:持续30分钟较少见 世界讯息
支付宝“史诗级”更新!终于支持深色模式了:3步教你开启
真崎杏子r18_真崎杏子
linux 性能自我学习 ———— 不可中断进程和僵尸进程 [四]-今日热议
环球要闻:上交所:6月5日上市交易科创50ETF期权 涨跌幅参数适应性调整为20%
一辆最多2万元!多地发放购车补贴,6月买车真是好时机?_当前热门
商业力+公益心 正大广场K3H四周年童趣升级-今日关注
为求效率最大化:AI测试中将矛头指向人类操作者|每日简讯
司机倒车坠河万分紧急 路人一个个冲了过来:3分钟救起落水女子
一文了解摩尔线程MTT S70显卡!国产显卡最新大作-环球通讯
又一车企面临退市!市值蒸发98% 美国新造车也是一地鸡毛
深圳一公司员工因上完厕所不冲水被开除 网友一边倒支持:活该被开
学习笔记——软件、软件分类、软件测试、数据的形式与数制(进制之间的转化)_全球即时看
观速讯丨总结vue3 的一些知识点:Vue.js 条件语句
总结vue3 的一些知识点:Vue.js 安装
焦点资讯:网红经济学家转型带货 任泽平开卖生发油:曾炮轰苹果割韭菜
三星Galaxy S23系列再出新问题:这次是相机拍照模糊
每日消息!经济学家转型带货!任泽平卖生发油和酱香白酒
开车上高速竟让婴儿平躺副驾驶!理想汽车回应:非常危险 坚决反对|环球新视野
热点!5699元供不应求!moto razr 40 Ultra预售被抢购一空
海博早读|福建130多万中学生正面临这种健康危害
云原生第五周--k8s实战案例
环球快讯:ChatGPT 背后的英雄——AI芯片
世界快播:记录--让URL地址都变成了"ooooooooo"
利用jira及confluence的API进行批量操作(查找/更新/导出/备份/删除等)
Angular Google Charts教程_编程入门自学教程_菜鸟教程-免费教程分享 全球即时看
【天天新视野】财政系统组织申报2023年第二批专项债项目:13领域可用专项债作资本金
看点:商品日报(6月2日):市场风险偏好继续改善 玻璃涨停沪镍纯碱涨超4%
天天即时:《封神三部曲》首部即将上映:制作成本或为16.5亿元
如何拍出女朋友最美一面?OPPO Reno10 Pro+评测:长焦人像让直男也会拍照
今日关注:不到1斤重!宏碁蜂鸟迷你主机开卖:1499元起
安全带又出现问题!韩系豪华品牌捷尼赛思宣布召回G80、GV70等共计1602辆|环球最新
比亚迪西安工厂起火 现场浓烟滚滚!官方回应
当前短讯!什么可以防电脑辐射_什么防辐射
又双叒叕种草了新家装风格?AI帮你家居换装-全球今头条
vul -- Cybero靶机渗透
各大建站方案
今日快看!【解决方法】锐捷路由器配置IP地址,如RSR路由器
失业率下降影响市场甚微 短端日债延续走强
全球短讯!小鹏“掉队”,它究竟做错了什么?
单日票房占比超50%!《蜘蛛侠:纵横宇宙》评分解禁:9.0超高分
又一“巨无霸”!国产2万吨重载自动驾驶列车试验成功
2.9秒下完一部电影!Wi-Fi 7要来了:国内标准已落地
moto razr 40 ultra为何要装一块超大尺寸外屏?看完明白了
中国最深高铁站感受下:仅扶梯垂直高度42米 相当于15层楼 每日动态
2023.06 微信抓包方案 · 亲测可用
ASP.Net Core 刷新界面,内存持续增加不释放问题。
世界焦点!数据展示新利器:雷达图的魅力与优势
在西部脱颖而出的丹佛掘金确实是被所有人低估了-今日最新
美国登月被指造假 50多年前的通信技术做不到?大V科普|世界播资讯
Win11新画图推出两年后:承诺的深色模式终于有了|环球速读
别执迷不悟!张朝阳:上名牌和一般大学区别不太大 对你一生影响不大
iPhone 15 Pro系列屏幕供应商敲定:有三星和LG两家 全球今热点
长沙两摩托车笼中表演时相撞 惊险一幕曝光
焦点速递!H&M关店启示录
nginx在代理到upstream时转换http1.1为http1.0,长连接转为短连接
windows10 查看已连接wifi的密码
执行计划缓存,Prepared Statement性能跃升的秘密_天天速讯
专访:美国操纵G7干预别国事务——访巴西圣保罗州立大学教授保利诺 环球观点
环球看热讯:Apple Watch表带为何那么贵?原因揭开
理想“L6” 被长城给抢先造出来了:仅售23万!
天天新动态:小米汽车多项高层职务调整:前麦格纳高管黄振宇接管汽车供应链
全球速看:百度网盘内测大模型版云一朵智能助理:翻译、找图一句话搞定
599元 联想小新24 FHD高刷屏上架:100Hz刷新率 硬件级护眼_世界快资讯
一文读懂责任分配矩阵,解决你80%的项目难题 播报
今年618最值得买的手机:华为Pocket S限时优惠1000元、12期分期免息 天天即时
西游记主题公园游客吵架“牛魔王”劝架 幸运没人受伤:网友吐槽素质不如妖怪
蔷薇适合种在庭院什么地方?庭院种蔷薇如何养护?
四种立即改善在线安全的方法
国际清算银行:必须加强监管以防止更多银行倒闭|当前报道
热文:幼儿园摆20桌请200孩子吃席庆六一:每桌有龙虾、烧鸡、牛肉
还因续航焦虑不敢买电车吗?极氪001千里续航版交付:纯电1032km-世界动态
原价300元:星巴克家享黑咖啡10包25元大促(不到1折)-环球看点
天天即时:捷豹路虎发布全新品牌Logo!路虎车标从此成“遗产”
学生网购小石头收到7斤巨石 画面很荒谬很搞笑:网友笑谈赚了 当前信息
天天微资讯!OPEN AI接入MidJourney 画图支持GPT4中文智能优化效果惊艳
易基因:DNA羟甲基化和TET酶在胎盘发育和妊娠结局中的作用 | 深度综述_全球快资讯
环球焦点!规则引擎easyRules中组合规则的使用
windows10安装Sinpaste失败的解决
每日报道:社交app源码开发平台基础知识,软件二维码的生成