AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

ASP.NET Core Web中使用AutoMapper進(jìn)行對(duì)象映射

來(lái)源: 責(zé)編: 時(shí)間:2024-05-17 17:49:12 212觀看
導(dǎo)讀前言在日常開(kāi)發(fā)中,我們常常需要將一個(gè)對(duì)象映射到另一個(gè)對(duì)象,這個(gè)過(guò)程中可能需要編寫(xiě)大量的重復(fù)性代碼,如果每次都手動(dòng)編寫(xiě),不僅會(huì)影響開(kāi)發(fā)效率,而且當(dāng)項(xiàng)目越來(lái)越復(fù)雜、龐大的時(shí)候還容易出現(xiàn)錯(cuò)誤。為了解決這個(gè)問(wèn)題,對(duì)象映射

前言

在日常開(kāi)發(fā)中,我們常常需要將一個(gè)對(duì)象映射到另一個(gè)對(duì)象,這個(gè)過(guò)程中可能需要編寫(xiě)大量的重復(fù)性代碼,如果每次都手動(dòng)編寫(xiě),不僅會(huì)影響開(kāi)發(fā)效率,而且當(dāng)項(xiàng)目越來(lái)越復(fù)雜、龐大的時(shí)候還容易出現(xiàn)錯(cuò)誤。為了解決這個(gè)問(wèn)題,對(duì)象映射庫(kù)就隨之而出了,這些庫(kù)可以自動(dòng)完成對(duì)象之間的映射,從而減少大量的開(kāi)發(fā)工作量,提高開(kāi)發(fā)工作效率。今天我們來(lái)講講在ASP.NET Core Web中使用AutoMapper快速進(jìn)行對(duì)象映射。Fre28資訊網(wǎng)——每日最新資訊28at.com

使用對(duì)象映射庫(kù)有哪些好處?

  • 減少開(kāi)發(fā)工作量,提高開(kāi)發(fā)效率。
  • 減少開(kāi)發(fā)過(guò)程中的錯(cuò)誤和bug。
  • 簡(jiǎn)化代碼結(jié)構(gòu),提高代碼可讀性和可維護(hù)性。

AutoMapper對(duì)象映射庫(kù)介紹

AutoMapper是一個(gè)簡(jiǎn)單易用的.NET對(duì)象映射庫(kù),用于快速、方便地進(jìn)行對(duì)象之間的轉(zhuǎn)換和映射,極大的簡(jiǎn)化了開(kāi)發(fā)人員在處理對(duì)象映射時(shí)的工作量。Fre28資訊網(wǎng)——每日最新資訊28at.com

  • GitHub開(kāi)源地址:https://github.com/AutoMapper/AutoMapper
  • 在線文檔地址:https://docs.automapper.org/en/stable/Getting-started.html

安裝AutoMapper NuGet包

在ASP.NET Core Web API項(xiàng)目中搜索:AutoMapper NuGet包安裝。Fre28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Fre28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建源對(duì)象和目標(biāo)對(duì)象

接下來(lái)我們分別定義一個(gè)源對(duì)象(Student)和一個(gè)目標(biāo)對(duì)象(StudentViewModel)。Fre28資訊網(wǎng)——每日最新資訊28at.com

Student(源對(duì)象)

public class Student    {        /// <summary>        /// 學(xué)生ID [主鍵,自動(dòng)遞增]        /// </summary>        [PrimaryKey, AutoIncrement]        [Display(Name = "學(xué)生ID")]        public int StudentID { get; set; }        /// <summary>        /// 班級(jí)ID        /// </summary>        [Display(Name = "班級(jí)ID")]        public int ClassID { get; set; }        /// <summary>        /// 學(xué)生姓名        /// </summary>        [Display(Name = "學(xué)生姓名")]        public string Name { get; set; }        /// <summary>        /// 學(xué)生年齡        /// </summary>        [Display(Name = "學(xué)生年齡")]        public int Age { get; set; }        /// <summary>        /// 學(xué)生性別        /// </summary>        [Display(Name = "學(xué)生性別")]        public string Gender { get; set; }    }

StudentViewModel(目標(biāo)對(duì)象)

public class StudentViewModel    {        /// <summary>        /// 學(xué)生ID [主鍵,自動(dòng)遞增]        /// </summary>        [PrimaryKey, AutoIncrement]        [Display(Name = "學(xué)生ID")]        public int StudentID { get; set; }        /// <summary>        /// 班級(jí)ID        /// </summary>        [Display(Name = "班級(jí)ID")]        public int ClassID { get; set; }        /// <summary>        /// 學(xué)生姓名        /// </summary>        [Display(Name = "學(xué)生姓名")]        public string Name { get; set; }        /// <summary>        /// 學(xué)生年齡        /// </summary>        [Display(Name = "學(xué)生年齡")]        public int Age { get; set; }        /// <summary>        /// 學(xué)生性別        /// </summary>        [Display(Name = "學(xué)生性別")]        public string Gender { get; set; }        /// <summary>        /// 班級(jí)名稱(chēng)        /// </summary>        [Display(Name = "班級(jí)名稱(chēng)")]        public string ClassName { get; set; }    }

配置AutoMapper映射規(guī)則

我們可以定義一個(gè)AutoMapperMappingProfile的映射配置文件,并在其中定義源類(lèi)型和目標(biāo)類(lèi)型之間的映射關(guān)系。Fre28資訊網(wǎng)——每日最新資訊28at.com

using AutoMapper;using Entity;using Entity.ViewModel;namespace WebApi{    /// <summary>    /// AutoMapper映射配置文件    /// </summary>    public class AutoMapperMappingProfile : Profile    {        /// <summary>        /// 添加映射規(guī)則        /// </summary>        public AutoMapperMappingProfile()        {            CreateMap<Student, StudentViewModel>();        }    }}

Program中注冊(cè)AutoMapper服務(wù)

使用AddAutoMapper()方法可以將AutoMapper所需的服務(wù)添加到該集合中,以便在應(yīng)用程序的其他部分中使用。該方法需要傳入一個(gè)Assembly數(shù)組,以告訴AutoMapper要掃描哪些程序集來(lái)查找映射配置(在當(dāng)前作用域的所有程序集里面掃描AutoMapper的配置文件)。Fre28資訊網(wǎng)——每日最新資訊28at.com

public static void Main(string[] args)        {            var builder = WebApplication.CreateBuilder(args);            builder.Services.AddControllers();            //添加 AutoMapper 的配置            //使用AddAutoMapper()方法可以將AutoMapper所需的服務(wù)添加到該集合中,以便在應(yīng)用程序的其他部分中使用。            //該方法需要傳入一個(gè)Assembly數(shù)組,以告訴AutoMapper要掃描哪些程序集來(lái)查找映射配置(在當(dāng)前作用域的所有程序集里面掃描AutoMapper的配置文件)。            builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());        }

進(jìn)行對(duì)象映射操作

依賴注入獲取IMapper接口的實(shí)例

/// <summary>    /// 學(xué)生管理    /// </summary>    [ApiController]    [Route("api/[controller]/[action]")]    public class StudentController : ControllerBase    {        private readonly IMapper _mapper;        /// <summary>        /// 依賴注入        /// </summary>        /// <param name="mapper">mapper</param>        public StudentController(IMapper mapper)        {            _mapper = mapper;        }    }

進(jìn)行對(duì)象映射操作

接下來(lái)我們使用使用IMapper接口的Map方法來(lái)進(jìn)行對(duì)象映射操作。Fre28資訊網(wǎng)——每日最新資訊28at.com

var studentsListDto = _mapper.Map<List<StudentViewModel>>(students);

映射結(jié)果輸出

圖片圖片Fre28資訊網(wǎng)——每日最新資訊28at.com

完整示例源代碼

  • https://github.com/YSGStudyHards/EasySQLite

圖片 圖片 Fre28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-88937-0.htmlASP.NET Core Web中使用AutoMapper進(jìn)行對(duì)象映射

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 如何使用 SwiftUI 構(gòu)建 visionOS 應(yīng)用

下一篇: 基于Node.js從零構(gòu)建自動(dòng)化出碼工作流

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 7月安卓手機(jī)好評(píng)榜:三星S23Ultra好評(píng)率第一

    性能榜和性價(jià)比榜之后,我們來(lái)看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來(lái)源安兔兔評(píng)測(cè),收集時(shí)間2023年7月1日至7月31日,僅限國(guó)內(nèi)市場(chǎng)。第一名:三星Galaxy S23 Ultra好評(píng)率:95.71%在即將迎來(lái)新
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時(shí)間業(yè)務(wù)團(tuán)隊(duì)偶爾會(huì)碰到一些 Pulsar 使用的問(wèn)題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問(wèn)題。雖然我們有個(gè)監(jiān)控頁(yè)面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們?cè)谌粘9ぷ骱蜆I(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開(kāi)發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時(shí)候了!學(xué)弟,最近學(xué)習(xí)的怎么樣啊 了不起學(xué)弟:最近學(xué)習(xí)的還不錯(cuò),每天都在學(xué)習(xí),每天都在進(jìn)步! 了不起:那你最近學(xué)習(xí)的什么呢? 了不起學(xué)弟:最近在學(xué)習(xí)C
  • 小紅書(shū)1周漲粉49W+,我總結(jié)了小白可以用的N條漲粉筆記

    作者:黃河懂運(yùn)營(yíng)一條性教育視頻,被54萬(wàn)人&ldquo;珍藏&rdquo;是什么體驗(yàn)?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書(shū)就有超過(guò)128萬(wàn)人,為她瘋狂點(diǎn)贊!更瘋狂的是,這
  • 破圈是B站頭上的緊箍咒

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛(ài)奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 半導(dǎo)體需求下滑 三星電子DS業(yè)務(wù)部門(mén)今年?duì)I業(yè)虧損預(yù)計(jì)超10萬(wàn)億韓元

    7月17日消息,據(jù)外媒報(bào)道,去年下半年開(kāi)始的半導(dǎo)體需求下滑,影響到了三星電子、SK海力士、英特爾等諸多廠商,營(yíng)收明顯下滑,部分廠商甚至出現(xiàn)了虧損。作為
  • 質(zhì)感不錯(cuò)!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來(lái),OPPO K系列機(jī)型都保持著較為均衡的產(chǎn)品體驗(yàn),歷來(lái)都是2K價(jià)位的明星機(jī)型,去年推出的OPPO K10和OPPO K10 Pro兩款機(jī)型憑借各自的出色配置,堪稱(chēng)有
  • 蘋(píng)果140W USB-C充電器:采用氮化鎵技術(shù)

    據(jù)10 月 30 日 9to5 Mac 消息報(bào)道,當(dāng)蘋(píng)果推出新的 MacBook Pro 2021 時(shí),該公司還推出了新的 140W USB-C 充電器,附贈(zèng)在 MacBook Pro 16 英寸機(jī)型的盒子里,也支
Top