首页 > 编程语言 >C#对象映射器Mapster

C#对象映射器Mapster

时间:2023-07-10 23:44:53浏览次数:48  
标签:映射 映射器 C# 对象 context Mapster NET

1.前言

       在开发中,我们经常用到对象之间的映射。谈到对象映射器,我们比较熟知的肯定是AutoMapper,但很少人会知道Mapster。今天在这里我们一起探讨一下什么是Mapster?为什么有了AutoMapper映射器了,还要学习使用Mapster?

2.什么是Mapster?

        Mapster是一个.NET库,它提供了一种简单的方式来实现对象之间的映射。它使用了一个基于约定的自动映射策略,让你可以轻松地将一个对象转换为另一个对象。

3.安装

使用NuGet CLI安装Mapster:

  Install-Package Mapster

或者使用.NET core CLI安装Mapster:

  dotnet add package Mapster

4.基本用法

4.1映射到新对象

       Mapster创建目标对象并将值映射到该对象。

       var destObject = sourceObject.Adapt<Destination>();

4.2映射到现有对象

       创建对象后,Mapster会映射到该对象。

       sourceObject.Adapt(destObject);

4.3可查询扩展

        Mapster还提供了映射查询表的扩展。

using (MyDbContext context = new MyDbContext())
{
    // 使用Mapster提供的ProjectToType扩展方法减少我们手动Select操作
    var destinations = context.Sources.ProjectToType<Destination>().ToList();

    // 相对于手工操作
    var destinations = context.Sources.Select(c => new Destination {
        Id = c.Id,
        Name = c.Name,
        Surname = c.Surname,
        ....
    })
    .ToList();
}

5.为什么选择Mapster?

        Mapster旨在提高速度和内存效率。您可以获得4倍的性能提升的同时只使用1/3的内存的。

测试报告:

 

6.总结

Mapster是一个非常方便的库,它可以大大简化.NET项目中的对象之间的映射工作,并且具有很好的可扩展性和灵活性,更重要的是相比于其它对象映射库有性能和内存效率。这么好的对象映射库,您会在项目中使用吗?

这里提供下Mapster开源地址:GitHub-MapsterMapper/Mapster:一个快速、有趣且刺激的对象到对象映射器






 

标签:映射,映射器,C#,对象,context,Mapster,NET
From: https://www.cnblogs.com/YDSLM/p/17542650.html

相关文章

  • 巧用 bc 命令测试 Linux 主机的 CPU 性能
    今天向公司申请了一台Linux主机,作为平时的开发环境。由于自己并不依赖远程开发(大多数情况下项目都可以本地开发、调试),于是只申请了4C/8G的低配机器。突然好奇的是,这台机器的性能怎么样?磁盘就不测试了,IO应该和生产环境差不多。先看看CPU的信息:cat/proc/cpuinfoprocesso......
  • Pulsar集群: instanceId xxx is not match with xxx
    Pulsar集群:instanceIdxxxisnotmatchwithxxx1.问题原因pulsar本地存储的instanceId与zookeeper不一致导致,即使将zookeeper上instanceId强行改为与本地相同的Id依然会报出异常。可能是重复执行了以下命令导致#刚入职的公司,同事说pulsar集群挂了,现在一直在用单节点,让我......
  • Rockylinux9或Centos8安装zabbix6.0
    zabbix6.0服务端不再支持Centos7的yum安装,Centos8已停止维护,rockylinux是RHEL的下游免费发行版。1.安装rockylinux9:阿里云下载地址#关闭防火墙和selinux并重启sed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/configsystemctldisable--nowfirewalld#查......
  • springcloud alibaba -sentinel 配置持久化(datasource -nacos)
    当我们对sentinel进行规则配置之后如果关闭服务在重新启动会发现配置的服务消失了,这样很不方便的,我们需要将它持久化,使用nacos对其进行持久化1.导入依赖让sentinel和nacos产生关系<!--SpringCloudailibabasentinel-datasource-nacos--><dependency><groupId>com.alib......
  • 前端框架及项目面试-聚焦Vue、React、Webpack
    第1章课程导学介绍课程制作的背景和课程主要内容。第2章课程介绍先出几道面试真题,引导思考。带着问题来继续学习,效果更好。第3章Vue使用Vue是前端面试必考内容,首先要保证自己要会使用Vue。本章讲解Vue基本使用、组件使用、高级特性和VuexVue-router,这些部分的知识点和......
  • arcgis pro自定义ribbon
     参考:https://pro.arcgis.com/en/pro-app/2.9/get-started/customize-the-ribbon.htm......
  • React18+Next.js13+TS,B端+C端完整业务+技术双闭环(20章)
    最新React技术栈,实战复杂低代码项目-仿问卷星第1章开期准备试看3节|20分钟介绍课程内容,学习建议和注意事项。演示课程项目,让学员有一个整体的认识。第2章【入门】什么是ReactReact引领了现代前端开发的变革8节|50分钟介绍React的历史、背景和每次版本更新。介绍R......
  • 编程语言比拼之Java VS C++
    学Java还是C++?Java和C++都是非常受欢迎的编程语言,各有各的优势和适用场景。以下是对它们的简要比较:性能:C++通常被认为是一种更高效的编程语言,适用于对性能要求较高的应用程序,如游戏开发、嵌入式系统和高频交易等。C++具有更接近底层的控制能力,允许开发人员直接管理内存和硬件资源,以......
  • Google MusicLM:让音乐创作变得简单
    Google发布了一项非常有趣的人工智能项目:MusicLM。它可以让任何人通过简单的文字描述就能生成原创音乐。MusicLM是什么MusicLM是一个文本到音乐生成模型,是基于Google的语言模型LaMDA开发的。用户只需用自然语言描述音乐风格、氛围、搭配乐器等,MusicLM就可以自动生成与......
  • LeetCode -- 352场周赛
     思路:动态规划首先计算原数组的条件数组,及所有的元素都%2f[i]表示从零到i中选,且以第i项为结尾的最长奇偶子数组。classSolution{public:intlongestAlternatingSubarray(vector<int>&nums,intthreshold){intn=nums.size();vector<int>d(n......