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