下面是我用来在 Index.cshtml 中填写表格的代码。属性列表有 1 行, map 模型之后有 0 行。我错过了什么吗?我原以为属性模型也会有 1 行。
// GET://
[HttpGet]
public IActionResult Index()
{
//get
List<Company.Model> list = repo.ReadAll();
//to map
List<Company.DTO> model;
//config for mapping
var config = new MapperConfiguration(cfg => cfg.CreateMap<List<Company.Model>, List<Company.DTO>>());
//create mappper
var mapper = config.CreateMapper();
//the map
model = mapper.Map<List<Company.DTO>>(list);
//return
return View(model);
}
当我做错了什么时请告诉我!我的第一个 Automap 和 Stack Overflow 上的第一篇文章。谢谢!!
最佳答案
将一个模型映射到另一个模型。 Automapper 足够智能,可以映射集合:
var config = new MapperConfiguration(cfg => cfg.CreateMap<Company.Model, Company.DTO>());
现在,您还没有告诉它如何映射 Model
到 DTO
!它只知道如何映射 List<Model>
到 List<DTO>
,这很棒,但它不知道如何映射集合中的每个单独元素!
现在它知道如何将模型映射到 dto,它也知道如何将一个集合映射到另一个集合:
model = mapper.Map<List<Company.DTO>>(list);
每个集合类型是什么并不重要,只要它们都是集合即可。输入可以是一个数组,您可以将其映射到 List<DTO>
, 没问题。就像我说的,Automapper 在集合方面很智能。它只需要知道如何映射您的内容。
这意味着您永远不需要将事物集合映射到小部件集合。只需将事物映射到小部件,然后让 Automapper 完成剩下的工作。这是一个勤奋的人:)
关于c# - AutoMapper 无法使用 ASP.NET Core 将 List<Model>(1 项)转换为 List<DTO>(0 项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270974/