Asp.Net Core 3.1 Api 集成Abp项目AutoMapper

Abp中分为自动属性映射,和自定义映射

我们新建一个Core层作为实体层,项目也要安装Abp Nuget Package

 

 TestCase作为表的实体

我们先做自定义映射demo,

 在Application层,新建一个创建TestCase的数据传输对象,用于创建实体时表单的传入,这里不需要id所以不用继承Entity

数据传输对象最好是需要就新建,不要相互之间继承,虽然这样可以减少代码,但是后面维护会困难。我们创建有创建的dto,更新有更新的dto,返回的有TestCaseDto,他们之间互相独立,不相互继承

 创建一个返回数据的dto,一般展示层需要id,我们只要继承Entity 就可以了。

 我们在dto文件夹中建一个TestCaseMapProfile类,它继承AutoMapper的Profile,在构造方法中,创建dto 之间的映射。

 我们把之前的代码修改一下,让ITestCaseAppService继承IApplicationService接口。让TestCaseAppService继承ApplicationService,ApplicationService提供了一个ObjectMapper对象,我们可以用ObjectMapper对象在实体和数据传输对象之间转换。

 在Application 中我们添加对AbpAutoMapper项目的引用,代码的作用是项目启动会先加载Application中所有继承Profile的类,用于做对象之间的自动映射。。

自动映射可以配置比较复杂的属性,具体可以查看AutoMapper的用法

除了自动映射,还有另外一种用于简单对象的属性映射

AutoMap的双向的,也就是TestCase 可以转成TestCaseEditDto,TestCaseEditDto也可以转成TestCase

 AutoMapTo 只能 从TestCaseEditDto 转成TestCase

AutoMapFrom 只能 从TestCase 转成 TestCaseEditDto

用于 更新实体的数据传输对象,我们只要使用AutoMapTo就可以了,因为我们要从Dto映射成实体

 这样就可以实现映射。但是在实际的项目中,我们只需要更新我们的TestCaseEditDto中定义的属性,原来的实体什么创建时间和创建人什么的都需要保留,

Abp 给我们提供了Map的另外一个重载方法,把原来旧实体需要保留的属性可以保留下来,只更改表单中传进来的属性,也就是我们需要更改的属性通过EditDto对外暴露

猜你喜欢

转载自www.cnblogs.com/dazen/p/12232999.html