• AspNetCore中AutoMapper映射对象使用技巧(二)


    继上一篇:AutoMapper自动映射框架的使用(一) - 点终将连成线 - 博客园 (cnblogs.com)

    假如现在有两个一样的对象,一个从数据库查出来,一个是你自己添加的,需求是融合这两个对象,为空的则不映射,实现的流程如下:

          自己添加               数据库                 结果

    这个对象的属性如果很少则可以手动映射,如果有10个,50个,100个呢,这个时候就需要借助映射工具了;

    注意:AutoMapper中Map()方法不能够映射自己,所以你可以把一样的对象命名成两个类其中属性一模一样,一个作为源,一个作为对象;

    首先去数据库查询:

    var taskFormRepo = await GetTaskByAsync(newSpider);

    映射:这里传进来的对象为taskItemParameters

    var taskResult = _mapper.Map(taskItemParameters, taskFormRepo);//(输入数据,需要更新的数据)

    因为两个对象之间的属性相同,所以映射的时候会将null覆盖原有的值,即:上图的结果变为:size:null   color:Red

    为了使他们隐射时不覆盖空的,可以在自定义的Profile文件中自定义映射条件:

    CreateMap<TaskItemParameters, TaskItem>().ForAllMembers(opts =>opts.Condition((src,dest,srcMember)=>srcMember!=null));//<源对象,目标对象>

    这里只是定义这两个映射对像不为空,好像有全局定义的方法,后面研究出来怎么用再更新;

    最后如果想把映射结果保存回数据库中,仅需:

    await _appDbContext.SaveChangesAsync();

    这个过程中判断具体的属性值一点没有用到,相比起手动映射效率还是相当可以的;

  • 相关阅读:
    ADO中的多层次数据集,类似于dataset
    工作流的设计
    Socket bind系统调用简要分析
    linux Network Address Translation NAT 转载 还需要整理
    生活20190602
    磁盘空间满的问题
    linux netfilter nat 实现 转载
    Socket 套接字的系统调用
    linux 网络编程 基础
    学习linux,不要找别人了,我有东西要发
  • 原文地址:https://www.cnblogs.com/jf-ace/p/15530132.html
Copyright © 2020-2023  润新知