美文网首页
AutoMapper库的使用

AutoMapper库的使用

作者: Memoyu | 来源:发表于2019-06-21 14:53 被阅读0次

概述

  AutoMapper简单的说就是一个对象与对象之间的映射工具,通过它,我们可以将类型A映射到类型B(很多场景下是Model —ViewModel两个DTO类型的映射(DTO(Data Transfer Object)就是数据传输对象,里边装的是数据属性之类的))。
例如:我们这里有三个类,

//Author类,存储姓名信息
public class Author
{
public string Name { get; set; }
}
//Book类,存储书本名称,作家信息
public class Book
{
public string Title { get; set; }
public Author Author { get; set; }
}
//界面要展示的书本信息则为书本名Title与作家Author
public class BookViewModel
{
public string Title { get; set; }
public string Author { get; set; }
}

在以前,我们需要这样赋值:

BookViewModel model = new BookViewModel
{
Title = book.Title,
Author = book.Author.Name
}

数据量少的时候,它并没有什么问题,如果,给上百个属性赋值时,这将是很繁琐枯燥的一个事情。

AutoMapper用法

而AutoMapper正是解决了这些问题。
我们只需要导入Nuget包,然后引入命名空间

AutoMapper.Mapper.CreateMap<Book, BookViewModel>();
var model = AutoMapper.Mapper.Map<BookViewModel>(book);

不过,上述还是有个问题并没有得到很好的解决,这也是在AutoMapper文档上缺失的,为把Book.Athor.Name字段赋值给BookViewModel.Author字段,需要在每一处需要执行映射的代码地方,同时创建一个如下的显示转换申明代码,所以如果有很多处转换的话,那么我们就会写很多重复的这几行代码:

AutoMapper.Mapper.CreateMap<Book, BookViewModel>()
.ForMember(dest => dest.Author , opts => opts.MapFrom(src => src.Author.Name));

参考来源
更多使用

相关文章

网友评论

      本文标题:AutoMapper库的使用

      本文链接:https://www.haomeiwen.com/subject/govjqctx.html