我们安装的不是第一个库,而是下面这个扩展库,它和.net core里面的依赖注入体系可以更好的结合。
P12 添加 AutoMapper_属性值
安装它的时候,相当于已经带着AutoMapper了。

P12 添加 AutoMapper_程序集_02

注册AutoMapper到DI的容器里面

它需要有参数,程序集的数组。
P12 添加 AutoMapper_ASP.NET Core 3.x_03

只有引入了命名空间AutoMapper。下面的UseAutoMapper才能找到这个方法。

P12 添加 AutoMapper_配置文件_04


AutoMapper将在这些Assembly程序集里面寻找AutoMapper的配置文件。
扫描当前域下的所有程序集。P12 添加 AutoMapper_配置文件_05

添加配置文件

添加Profiles文件夹。
P12 添加 AutoMapper_配置文件_06
添加CompanyProfiles
P12 添加 AutoMapper_赋值_07
从Company映射到CompanyDto
P12 添加 AutoMapper_配置文件_08
约定:
元类型和目标类型里面的属性名 如果是一样的话,那么元类型的属性值就会赋值给目标类型的属性。
如果dto里面有属性在Company里面不存在。,那么就忽略。
他俩并列显示
P12 添加 AutoMapper_属性值_09
dto里面故意把Name改成CompanyName。这个时候源类型和目标类型的属性名就不一致了。这个时候映射肯定是不会成功的。
P12 添加 AutoMapper_程序集_10
针对按照默认的约定无法映射成功的,增加手动的映射
P12 添加 AutoMapper_配置文件_11

Controller内优化代码

构造函数注入AutoMapper
P12 添加 AutoMapper_属性值_12

如果注入的为空就抛出异常
P12 添加 AutoMapper_配置文件_13


P12 添加 AutoMapper_赋值_14
getCompany方法 返回类型也改成ActionResult
P12 添加 AutoMapper_配置文件_15

运行测试

P12 添加 AutoMapper_程序集_16
返回的属性名变了,说明AutoMapper是成功了。
P12 添加 AutoMapper_ASP.NET Core 3.x_17
测试返回单个对象的
P12 添加 AutoMapper_赋值_18


 

结束