将一个模型映射到另一个模型

问题描述

我有两个模型,其中一个我处理并将其返回到视图,然后从视图中将其发送到控制器。在控制器中,我需要将其发送到存储过程,但是该存储过程需要一个具有不同属性名称的模型。 这是我的模型:


public class Operator
    {
        public int OPERATOR_OBJECTID { get; set; }

        public string SETTLEMENT_OBJECTID { get; set; }

        public string TECHNOLOGY_OBJECTID { get; set; }
    }

这是存储过程期望的模型

public class UploadModel
    {
        public int OPERATOR_OBJECTID { get; set; }
        public string SETTLEMENT_CODE { get; set; }
        public string TECHNOLOGY_CODE { get; set; }
    }

自从我从Operator发送属性以来,就像SETTLEMENT_OBJECTID一样,但是它期望SETTLEMENT_CODE会引发异常。我可以以某种方式将属性一个模型映射到另一个模型,还是可以将一个模型投射到另一个模型?什么是一个好的解决方案?

解决方法

如评论中所述,您可以使用自动映射器库并进行如下配置:

var mapConfig = new MapperConfiguration(
   cfg => cfg.CreateMap<Operator,UploadModel>()
      .ForMember(dest => dest.SETTLEMENT_CODE,opt => opt.MapFrom(src => src.SETTLEMENT_OBJECTID))
      .ForMember(dest => dest.TECHNOLOGY_CODE,opt => opt.MapFrom(src => src.TECHNOLOGY_OBJECTID))
);

在此处查看入门指南:https://docs.automapper.org/en/stable/Getting-started.html

您还可以定义一个显式运算符,使其能够从一个类转换为另一个类:https://www.dotnetperls.com/explicit