欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2024年05月17日 15:12:12   作者:追逐時(shí)光者  
AutoMapper是一個(gè)簡(jiǎn)單易用的.NET對(duì)象映射庫(kù),用于快速、方便地進(jìn)行對(duì)象之間的轉(zhuǎn)換和映射,極大的簡(jiǎn)化了開發(fā)人員在處理對(duì)象映射時(shí)的工作量,今天我們來(lái)講講在ASP.NET Core Web中使用AutoMapper快速進(jìn)行對(duì)象映射,感興趣的朋友跟隨小編一起看看吧

前言

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

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

  • 減少開發(fā)工作量,提高開發(fā)效率。
  • 減少開發(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)化了開發(fā)人員在處理對(duì)象映射時(shí)的工作量。

安裝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í)名稱
        /// </summary>
        [Display(Name = "班級(jí)名稱")]
        public string ClassName { get; set; }
    }

配置AutoMapper映射規(guī)則

我們可以定義一個(gè)AutoMapperMappingProfile的映射配置文件,并在其中定義源類型和目標(biāo)類型之間的映射關(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ì)象映射操作

依賴注入獲取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ì)象映射操作。

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

映射結(jié)果輸出

完整示例源代碼

DotNetGuide技術(shù)社區(qū)交流群

  • DotNetGuide技術(shù)社區(qū)是一個(gè)面向.NET開發(fā)者的開源技術(shù)社區(qū),旨在為開發(fā)者們提供全面的C#/.NET/.NET Core相關(guān)學(xué)習(xí)資料、技術(shù)分享和咨詢、項(xiàng)目框架推薦、求職和招聘資訊、以及解決問(wèn)題的平臺(tái)。
  • 在DotNetGuide技術(shù)社區(qū)中,開發(fā)者們可以分享自己的技術(shù)文章、項(xiàng)目經(jīng)驗(yàn)、學(xué)習(xí)心得、遇到的疑難技術(shù)問(wèn)題以及解決方案,并且還有機(jī)會(huì)結(jié)識(shí)志同道合的開發(fā)者。
  • 我們致力于構(gòu)建一個(gè)積極向上、和諧友善的.NET技術(shù)交流平臺(tái)。無(wú)論您是初學(xué)者還是有豐富經(jīng)驗(yàn)的開發(fā)者,我們都希望能為您提供更多的價(jià)值和成長(zhǎng)機(jī)會(huì)。

到此這篇關(guān)于ASP.NET Core Web中使用AutoMapper進(jìn)行對(duì)象映射的文章就介紹到這了,更多相關(guān)ASP.NET Core Web對(duì)象映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論