如何解决将一个模型映射到另一个模型
我有两个模型,其中一个我处理并将其返回到视图,然后从视图中将其发送到控制器。在控制器中,我需要将其发送到存储过程,但是该存储过程需要一个具有不同属性名称的模型。 这是我的模型:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。