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

當前位置:首頁 > 科技  > 軟件

ASP.NET Core Web中使用AutoMapper進行對象映射

來源: 責編: 時間:2024-05-17 17:49:12 187觀看
導讀前言在日常開發中,我們常常需要將一個對象映射到另一個對象,這個過程中可能需要編寫大量的重復性代碼,如果每次都手動編寫,不僅會影響開發效率,而且當項目越來越復雜、龐大的時候還容易出現錯誤。為了解決這個問題,對象映射

前言

在日常開發中,我們常常需要將一個對象映射到另一個對象,這個過程中可能需要編寫大量的重復性代碼,如果每次都手動編寫,不僅會影響開發效率,而且當項目越來越復雜、龐大的時候還容易出現錯誤。為了解決這個問題,對象映射庫就隨之而出了,這些庫可以自動完成對象之間的映射,從而減少大量的開發工作量,提高開發工作效率。今天我們來講講在ASP.NET Core Web中使用AutoMapper快速進行對象映射。dbn28資訊網——每日最新資訊28at.com

使用對象映射庫有哪些好處?

  • 減少開發工作量,提高開發效率。
  • 減少開發過程中的錯誤和bug。
  • 簡化代碼結構,提高代碼可讀性和可維護性。

AutoMapper對象映射庫介紹

AutoMapper是一個簡單易用的.NET對象映射庫,用于快速、方便地進行對象之間的轉換和映射,極大的簡化了開發人員在處理對象映射時的工作量。dbn28資訊網——每日最新資訊28at.com

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

安裝AutoMapper NuGet包

在ASP.NET Core Web API項目中搜索:AutoMapper NuGet包安裝。dbn28資訊網——每日最新資訊28at.com

圖片圖片dbn28資訊網——每日最新資訊28at.com

創建源對象和目標對象

接下來我們分別定義一個源對象(Student)和一個目標對象(StudentViewModel)。dbn28資訊網——每日最新資訊28at.com

Student(源對象)

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

StudentViewModel(目標對象)

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

配置AutoMapper映射規則

我們可以定義一個AutoMapperMappingProfile的映射配置文件,并在其中定義源類型和目標類型之間的映射關系。dbn28資訊網——每日最新資訊28at.com

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

Program中注冊AutoMapper服務

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

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

進行對象映射操作

依賴注入獲取IMapper接口的實例

/// <summary>    /// 學生管理    /// </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;        }    }

進行對象映射操作

接下來我們使用使用IMapper接口的Map方法來進行對象映射操作。dbn28資訊網——每日最新資訊28at.com

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

映射結果輸出

圖片圖片dbn28資訊網——每日最新資訊28at.com

完整示例源代碼

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

圖片 圖片 dbn28資訊網——每日最新資訊28at.com

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何使用 SwiftUI 構建 visionOS 應用

下一篇: 基于Node.js從零構建自動化出碼工作流

標簽:
  • 熱門焦點
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據今天鴻蒙OS 4.0的現場演示顯示,華為的實況窗可以更高效的展現出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業發布的ESG報告。ESG是&ldquo;環境保
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 華為將推出盤古數字人大模型 可幫助用戶12小時完成數字人生成

    在今日舉行的2023年華為云數字文娛AI創新峰會上,華為云全球Marketing與銷售服務總裁石冀琳表示,華為云將在后續推出盤古數字人大模型,可幫助用戶12小
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • 2021中國國際消費電子博覽會與青島國際軟件融合創新博覽會新聞發布會隆重舉行

    9月18日,2021中國國際消費電子博覽會與青島國際軟件融合創新博覽會新聞發布會在青島國際新聞中心隆重舉行。發布會上青島市政府領導聯袂出席,對本次雙展會情
Top