成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

前言

在日常開(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ì)象映射。

使用對(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í)的工作量。

  • 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包安裝。

圖片圖片

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

接下來(lái)我們分別定義一個(gè)源對(duì)象(Student)和一個(gè)目標(biāo)對(duì)象(StudentViewModel)。

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)系。

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的配置文件)。

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ì)象映射操作

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

/// <summary>
    /// 學(xué)生管理
    /// </summary>
    [ApiController]
    [Route("api/[controller]/[action]")]
    public class StudentController : ControllerBase
    {
        private readonly IMapper _mapper;

        /// <summary>
        /// 依賴(lài)注入
        /// </summary>
        /// <param name="mapper">mapper</param>
        public StudentController(IMapper mapper)
        {
            _mapper = mapper;
        }
    }

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

接下來(lái)我們使用使用IMapper接口的Map方法來(lái)進(jìn)行對(duì)象映射操作。

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

映射結(jié)果輸出

圖片圖片

完整示例源代碼

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

圖片 圖片

責(zé)任編輯:武曉燕 來(lái)源: 追逐時(shí)光者
相關(guān)推薦

2024-02-26 08:15:00

數(shù)據(jù)映代碼開(kāi)發(fā)

2023-12-15 15:03:54

.NETAutoMapper對(duì)象映射工具

2021-03-17 09:45:31

LazyCacheWindows

2021-02-02 16:19:08

Serilog日志框架

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-03-10 09:40:43

LamarASP容器

2021-02-03 13:35:25

ASPweb程序

2021-02-28 20:56:37

NCache緩存框架

2021-03-03 22:37:16

MediatR中介者模式

2021-01-28 22:39:35

LoggerMessa開(kāi)源框架

2021-01-31 22:56:50

FromServiceASP

2021-01-07 07:39:07

工具接口 Swagger

2009-07-21 15:55:59

使用Web PartsASP.NET 2.0

2021-02-07 17:29:04

監(jiān)視文件接口

2021-02-17 08:51:55

cookie身份驗(yàn)證

2009-07-20 16:45:41

使用StringBuiASP.NET

2021-06-22 16:59:56

微軟.NETC# 軟件開(kāi)發(fā)

2025-04-16 10:12:13

2021-01-26 14:57:00

中間件應(yīng)用模塊化

2021-04-12 07:03:10

輕量級(jí)模塊化框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产一区二区三区在线视频 | 日韩欧美中文在线 | 免费久久久久久 | 四虎影院在线免费观看 | 一区二区三区四区视频 | 成人av观看 | 在线看av网址| 9久久精品 | 国产成人精品久久二区二区91 | 国产一区在线免费观看视频 | 视频一区二区三区中文字幕 | 久久精品在线 | www.性色| 精品欧美一区二区三区久久久 | 欧美精品一区二区三区四区五区 | 精品一区二区三区四区外站 | 亚洲高清视频在线观看 | www.日韩av.com | 在线观看国产精品视频 | 狠狠操狠狠干 | 91精品国产综合久久香蕉麻豆 | 999免费网站| 热久久国产 | 黄色精品 | 免费久久精品 | 欧美日韩亚洲国产综合 | 一区二区三区在线免费观看 | 久久久久久国产精品 | 久热久热| 美女福利网站 | 国产精品完整版 | 国产伦一区二区三区久久 | 国产精品久久9 | 久久精品欧美一区二区三区不卡 | 日韩在线免费 | 中文字幕免费视频 | 国产一级黄色网 | 国产精品三级久久久久久电影 | 久久里面有精品 | 韩日一区二区三区 | a精品视频 |