zoukankan      html  css  js  c++  java
  • 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对外暴露

  • 相关阅读:
    Java中的魔法类-Unsafe
    Caffeine Cache-高性能Java本地缓存组件
    mysql之innodb日志管理
    mysql之innodb存储引擎---BTREE索引实现
    myslq5.7安装以及root密码找回
    mysql之innodb存储引擎---数据存储结构
    mysql之innodb存储引擎介绍
    java字符串详解
    hadoop2.7作业提交详解之文件分片
    hadoop2.7之作业提交详解(下)
  • 原文地址:https://www.cnblogs.com/dazen/p/12232999.html
Copyright © 2011-2022 走看看