C# AutoMapper 使用方法总结

yizhihongxing

C# AutoMapper 使用方法总结

什么是AutoMapper

AutoMapper 是一个能够自动将对象中属性映射到另一个对象的属性的开源库。

例如,你可能有一个 Domain 对象,这个对象拥有很多属性。而在你的应用程序的某些位置,你需要传递该对象到 MVC 模型或表示图形,而这个位置需要该 Domain 对象中仅一部分属性。AutoMapper 就是把 Domain 对象中你想要的属性打包到 DTO 或 MVC 模型中的最简便方法。

安装AutoMapper

PM> Install-Package AutoMapper

通过 NuGet 包管理器,你就可以轻松安装 AutoMapper。

如何使用AutoMapper

首先,添加一个新的 .cs 文件,在其中声明一个类,在该类中创建一个静态方法进行 AutoMapper 映射,如下所示:

    using AutoMapper;

    public class AutoMapperConfig
    {
        public static void Initialize()
        {
            Mapper.Initialize(cfg =>
            {
                // 配置映射规则
            });
        }
    }

然后在 Global.asax 中调用 AutoMapperConfig.Initialize() 来初始化 AutoMapper。

cfg => 中可以配置映射规则,如下所示:

cfg.CreateMap<Source, Destination>();
// 或者使用 ReverseMap() 进行双向映射
cfg.CreateMap<Source, Destination>().ReverseMap();
// 可以映射集合对象
cfg.CreateMap<List<Source>, List<Destination>>();
// 可以自定义转换规则
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.FullName, opt => opt.MapFrom(src => string.Format("{0} {1}", src.FirstName, src.LastName)));

示例说明

示例 1:

定义两个类:

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
}

public class EmployeeDto
{
    public int Id { get; set; }
    public string FullName { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
}

定义映射规则:

cfg.CreateMap<Employee, EmployeeDto>().ForMember(dest => dest.FullName, 
                                                  opt => 
                                                  opt.MapFrom(src => string.Format("{0} {1}", src.FirstName, src.LastName)));

使用 AutoMapper 进行映射:

var employee = new Employee { Id = 1, FirstName = "Tony", LastName = "Stark", Age = 40, Gender = "Male" };
var employeeDto = Mapper.Map<EmployeeDto>(employee);

结果为:

// employeeDto 值
{
    Id = 1,
    FullName = "Tony Stark",
    Age = 40,
    Gender = "Male"
}

示例 2:

定义以下两个类:

public class Order
{
    public int Id { get; set; }
    public decimal Amount { get; set; }
    public DateTime OrderDate { get; set; }
    public string CustomerName { get; set; }
}

public class OrderDto
{
    public int Id { get; set; }
    public decimal OrderTotal { get; set; }
    public DateTime OrderDate { get; set; }
    public string CustomerName { get; set; }
}

定义映射规则:

cfg.CreateMap<Order, OrderDto>().ForMember(dest => dest.OrderTotal, opt => opt.MapFrom(src => src.Amount));

进行映射:

var order = new Order { Id = 1, Amount = 100m, OrderDate = DateTime.Now, CustomerName = "Tom" };
var orderDto = Mapper.Map<OrderDto>(order);

结果为:

// orderDto 的值
{
    Id = 1,
    OrderTotal = 100.0,
    OrderDate = '2018/11/3',
    CustomerName = "Tom"
}

总结

以上就是 C# AutoMapper 的基础使用方法,它能够帮助我们减少追踪映射代码的时间并帮助我们更好地保持代码的整洁。如果你想要了解更多关于 AutoMapper 的用法,可以访问 AutoMapper 的 官方文档

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# AutoMapper 使用方法总结 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • C#中FileSystemWatcher的使用教程

    我将详细讲解如何使用C#中的FileSystemWatcher来监听文件系统的改变。本教程将包含以下内容: 简介:FileSystemWatcher是什么以及如何使用它 监听文件夹和文件变化的方式 示例说明 1. 简介 FileSystemWatcher是.NET Framework中的一个类,它以异步的方式监听文件和目录的变化。它可以监控以下变化: 文件或…

    C# 2023年5月31日
    00
  • c#封装百度web服务geocoding api 、百度坐标转换示例

    下面是详细讲解“c#封装百度web服务geocodingapi、百度坐标转换示例”的完整攻略。 1.了解百度Web服务、GeoCodingAPI和坐标转换功能 在开始本教程之前,首先需要了解百度Web服务、GeoCodingAPI和坐标转换功能的作用。 1.1 百度Web服务 百度Web服务是百度提供的一种通过互联网进行信息传输的服务。通过百度Web服务,你…

    C# 2023年5月15日
    00
  • .net从服务器下载文件中文名乱码解决方案

    针对“.net从服务器下载文件中文名乱码解决方案”,以下是完整攻略的步骤: 问题背景 当从服务器下载文件时,如果文件名中包含中文字符,很容易出现乱码错误。这是由于字符编码问题造成的。 解决方案 .NET提供了System.Net.WebClient类来下载文件。要解决中文文件名乱码问题,我们需要进行以下设置: 设置下载参数 下载文件前需要设置WebClien…

    C# 2023年5月15日
    00
  • ASP.NET MVC中HtmlHelper控件7个大类中各个控件使用详解

    ASP.NET MVC中的HtmlHelper控件可以简化应用程序中HTML表单的创建和验证,提高开发效率。它们可用于生成各种表单元素(例如文本框、下拉选项、单选框、复选框、隐藏域等),并自动处理表单数据的验证和重现。HtmlHelper控件大致可分为以下7个大类: 输入控件(Input Controls):此类包括各种HTML输入元素,如文本框、密码框、多…

    C# 2023年5月31日
    00
  • C# 计算标准偏差相当于Excel中的STDEV函数实例

    计算标准偏差(Standard Deviation)是统计学中的一个重要概念,它是一组数据的离散程度的度量标准。在统计分析中,标准偏差用来衡量数据集中数据的分散情况。在C#中,可以使用Math库中的方法进行计算。下面是计算标准偏差相当于Excel中STDEV函数实例的完整攻略。 步骤一:定义数据 首先,我们需要定义一组数据作为计算标准偏差的数据源。假设我们有…

    C# 2023年6月8日
    00
  • ASP.NET 绑定DataSet中的多个表

    ASP.NET 是一个Web应用程序框架,能够以高效的方式在Web服务器上构建动态网站、Web应用程序和Web服务。DataSet是一种轻量级对象,可用于存储多个数据表和它们之间的关系,并将其与控件进行绑定。 在ASP.NET的开发过程中,如果需要在一个页面中展示来自多个数据表的数据,可以使用DataSet,并通过绑定控件的方式来展示数据。下面是绑定Data…

    C# 2023年5月31日
    00
  • C#10的13个特性

    下面是关于C#10的13个特性的详细讲解: 新特性列表 以下是C#10中的全部13个特性: 全局 修饰符 元组投影初始值设定项 第一级模式 物化值参数 元素增强 特殊的 GetEnums() 统一处理的命名参数 异步流的增加 数组分配表达式 const 局部变量 用于对象初始化函数的 With 操作符 使用, When, And <合成> 记法来…

    C# 2023年6月1日
    00
  • sql 语句 取数据库服务器上所有数据库的名字

    要取数据库服务器上所有数据库的名字,可以使用以下 SQL 语句: SHOW DATABASES; 执行这条语句将返回一个包含所有数据库名字的列表。 示例1:获取所有数据库的名字 SHOW DATABASES; 执行结果类似于下面这样: +——————–+ | Database | +——————–+ | i…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部