c# - AutoMapper 无法使用 ASP.NET Core 将 List<Model>(1 项)转换为 List<DTO>(0 项)

标签 c# asp.net asp.net-mvc

下面是我用来在 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>());

现在,您还没有告诉它如何映射 ModelDTO !它只知道如何映射 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/

相关文章:

java - 使用代码查找距离范围内的点(在数据库中存储一组纬度/经度)

c# - NULL 数组上的笛卡尔

c# - 内部类成员/属性可见性 (C#)

asp.net - mysql 事务在asp.net 中?

c# - 我应该为 ASP .NET MVC 应用程序使用内置的成员资格提供程序吗?

c# - .Net 自定义 TraceListener.TraceEvent 未触发

c# mvc 从字符串名称动态创建 Controller - eval?

asp.net - 在 OSX 上开发 asp.net 会面临哪些限制(如果有)? (2015/2016年度)

c# - 在 C# 中使用 out 关键字

asp.net - ASP.Net MVC 与经典 ASP 有何不同(不是 ASP.Net——原始 ASP)