C# AutoMapper 使用方法总结

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#中的字符串拼接@

    详解C#中的字符串拼接@ 什么是字符串拼接? 在C#中,我们经常需要将多个字符串连接起来,得到一个完整的字符串。比如在构造SQL语句、拼接URL参数等场景中,字符串拼接是非常常见的操作。在最初的C#版本中,字符串拼接操作主要使用加号(+)进行操作。但是,这种方式会产生很多临时字符串对象,对内存和性能有影响。从C# 2.0版本开始,开发者可以使用字符串拼接运算…

    C# 2023年6月8日
    00
  • C#中Entity Framework常见报错汇总

    下面是详细讲解“C#中EntityFramework常见报错汇总”的完整攻略。 C#中EntityFramework常见报错汇总 1. 连接字符串错误 连接字符串错误是EntityFramework中最常见的错误之一。连接字符串属于配置信息中的一部分,提供给DbContext使用。连接字符串可以包含数据库的名称、数据库服务器的名称(或IP)和其他必要的信息,…

    C# 2023年5月15日
    00
  • C#使用EF连接PGSql数据库的完整步骤

    概述 C# 是一种广泛使用的编程语言,EF(Entity Framework) 是一种数据访问技术,用于在 C# 中从数据库中检索、更新和操作数据。PGSql 是一种开源的关系型数据库。 在这篇文章中,我将带你了解如何使用 Entity Framework 与 C# 连接 PGSql 数据库的完整步骤。 步骤 以下是完整的步骤: 2.1. 安装 NuGet …

    C# 2023年6月1日
    00
  • C#判断某程序是否运行的方法

    为了判断某程序是否运行,可以使用C#中的System.Diagnostics命名空间下的Process类和相关方法。具体步骤如下: 引用System.Diagnostics命名空间 在代码文件顶部使用using关键字引用System.Diagnostics命名空间,代码如下: using System.Diagnostics; 构造Process类对象 使用…

    C# 2023年6月7日
    00
  • C#之字符串截取–Regex.Match使用

    C#之字符串截取–Regex.Match使用 在C#中,字符串截取是一项常见操作。Regex.Match()方法提供了一种强大的方式来根据正则表达式截取和匹配字符串。本文将介绍Regex.Match()方法的使用方法,包括声明、基本语法和两条示例说明。 声明 public static System.Text.RegularExpressions.Matc…

    C# 2023年6月6日
    00
  • C# 控制台实现一次性输入多行的操作

    下面是C# 控制台实现一次性输入多行的操作的完整攻略。 实现方法 实现一次性输入多行的操作需要用到Console.Readline()和StringBuilder类,具体步骤如下: 定义一个StringBuilder对象,用于存储多行输入的内容; 使用Console.ReadLine()方法读取用户的输入,将每一行的数据添加到StringBuilder中,以…

    C# 2023年6月7日
    00
  • Global.cs中自动获取未处理的异常

    首先,我们需要了解.NET框架的全局异常处理机制。在.NET中,我们可以通过捕获未处理的异常来处理程序运行时的错误,以便更好地改善用户体验。而要实现这一机制,我们可以利用Global.cs文件来自动获取未处理的异常。 具体实现方式如下: 在Global.cs文件中重写Application_Error方法。在这个方法中,我们可以用try-catch语句捕获未…

    C# 2023年5月15日
    00
  • C#中利用Lotus notes公共邮箱发送邮件的方法

    标题:C#中利用Lotusnotes公共邮箱发送邮件的方法 简介 在C#中,我们可以利用Lotusnotes公共邮箱发送邮件,其中Lotusnotes是一款基于客户端/服务器的电子邮件、日历和约会管理软件,是IBM推出的较为流行的企业级邮件软件之一。下面是利用Lotusnotes公共邮箱发送邮件的方法。 步骤 引用Lotusnotes COM组件 在Visu…

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