什么是 AutoMapper?






4.72/5 (22投票s)
这篇文章解释了在 C# 和 MVC 项目中使用 Automapper 的必要性。
目录
- 什么是 AutoMapper?
- 我没有指定映射,它是如何工作的?
- 如何在 Automapper 中映射不同的属性名称?
- 你能给出 Automapper 使用的实际场景吗?
- 我们可以在哪里获取 AutoMapper?
什么是 Automapper?
Automapper 是一个简单可重用的组件,它可以帮助你将数据从一种对象类型复制到另一种对象类型。如果你想获取 automapper,请阅读本文。
例如,下面是一个加载了一些虚拟数据的简单 employee
类。
class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public decimal Salary { get; set; }
}
// Loaded with some data
Employee emp = new Employee();
emp.FirstName = "Shiv";
emp.LastName = "Koirala";
emp.Salary = 100;
现在假设我们想将上述 employee
数据加载到名为“Person
”的类对象中。
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
因此,通常情况下,开发人员最终会编写如下所示的映射代码。
Person per = new Person();
per.FirstName = emp.FirstName;
per.LastName = emp.LastName;
乍一看,这似乎不是什么大问题,但等等……想想,如果你想一遍又一遍地使用这段映射代码会怎样。
因此,作为最佳实践,你希望将这段映射代码集中化,并一遍又一遍地重用这段映射代码。 这就是我们的超级英雄“AutoMapper
”来拯救你的地方。“Automapper”像一座桥梁一样位于这两个对象之间,并映射两个对象的属性数据。
使用 Automapper 是一个两步过程
- 创建
Map
。 - 使用
Map
,以便对象可以通信。
Mapper.CreateMap<Employee, Person>(); // Create Map
Person per = Mapper.Map<Employee, Person>(emp); // Use the map
我没有指定映射。它是如何工作的?
在上面的例子中,两个类的属性名称相同,因此映射会自动发生。
如何在 Automapper 中映射不同的属性名称?
如果类具有不同的属性名称,那么我们需要使用“ForMember
”函数来指定映射。
Mapper.CreateMap<Employee, Person>()
.ForMember(dest => dest.FName , opt => opt.MapFrom(src => src.FirstName))
.ForMember(dest => dest.LName , opt => opt.MapFrom(src => src.LastName));
你能给出 Automapper 使用的实际场景吗?
- 当你在像 MVC 这样的项目中将数据从
ViewModel
移动到Model
时。 - 当你在 DTO 和 Model 或实体对象之间移动数据时,反之亦然。
从哪里获取 AutoMapper?
最简单的方法是使用 nugget。 如果你对 nuget 还不熟悉,请观看此 YouTube 视频。
或者,你可以从他们的主站点 http://automapper.org/ 下载该组件。
另请参阅以下关于 C# Automapper 使用的视频
进一步阅读,请观看下面的面试准备视频和分步视频系列。