日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

前言

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

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

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

AutoMapper對象映射庫介紹

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

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

創建源對象和目標對象

接下來我們分別定義一個源對象(Student)和一個目標對象(StudentViewModel)。Z0128資訊網——每日最新資訊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的映射配置文件,并在其中定義源類型和目標類型之間的映射關系。Z0128資訊網——每日最新資訊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的配置文件)。Z0128資訊網——每日最新資訊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方法來進行對象映射操作。Z0128資訊網——每日最新資訊28at.com

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

映射結果輸出

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

完整示例源代碼

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 江安县| 霞浦县| 池州市| 龙门县| 云和县| 广南县| 莒南县| 巨鹿县| 工布江达县| 克拉玛依市| 讷河市| 南充市| 大方县| 高陵县| 无锡市| 焦作市| 巴林左旗| 屏东市| 潮州市| 瑞昌市| 武隆县| 孟村| 岑溪市| 高雄市| 咸丰县| 平江县| 通江县| 赤城县| 德令哈市| 许昌市| 忻城县| 富锦市| 灵石县| 呼伦贝尔市| 深州市| 宁阳县| 宝鸡市| 樟树市| 安远县| 平阳县| 科技|