Asp.net 帮助理解AutoMapper的基础知识

Asp.net 帮助理解AutoMapper的基础知识,asp.net,asp.net-mvc,automapper,Asp.net,Asp.net Mvc,Automapper,我有两门课: public class PhysicalTest { public int ID { get; set; } public DateTime CreationDate { get; set; } public int Weight { get; set; } public int Height { get; set; } public int Systolic { get; se

我有两门课:

public class PhysicalTest
    {
        public int ID { get; set; }       
        public DateTime CreationDate { get; set; }
        public int Weight { get; set; }
        public int Height { get; set; }
        public int Systolic { get; set; }  
        public int Diastolic { get; set; } 
        public int Pulse { get; set; }
}

public class PhysicalTestFormViewModel
    {
        public int ID { get; set; }       
        public DateTime CreationDate { get; set; }
        [Required]
        public int Weight { get; set; }
        [Required]
        public int Height { get; set; }
        public int Systolic { get; set; }  
        public int Diastolic { get; set; } 
        public int Pulse { get; set; }
}
这是我的自动映射配置

Mapper.CreateMap<PhysicalTestFormViewModel, PhysicalTest>();
但是当我这样做的时候,我得到了一个错误

正在尝试映射Summumnet.PhysicalTest 到 Summumnet.ViewModels.PhysicalTestFormViewModel。 缺少类型映射配置或 不支持的映射。类型异常 'AutoMapper.AutoMappingException' 被扔了


在抛出错误的场景中,我只想构造一个ViewModel来显示编辑表单。。。。执行此操作的标准方法是什么?

您只定义了从
PhysicalTestFormViewModel
PhysicalTest
的映射:

Mapper.CreateMap<PhysicalTestFormViewModel, PhysicalTest>();
Mapper.CreateMap();
您还需要另一个:

Mapper.CreateMap<PhysicalTest, PhysicalTestFormViewModel>();
Mapper.CreateMap();

请参阅相关的SO问题和答案。

您可以在不必创建任何贴图的情况下进行动态贴图

public ActionResult (PhysicalTestFormViewModel ptvm)
{
  //other to wrote codes
EHR ehr = ehrRepository.Find(ehrId);

AutoMapper.Mapper.DynamicMap<PhysicalTestFormViewModel, PhysicalTest>(ptvm, ehr);

db.SaveChanges();
}
公共操作结果(PhysicalTestFormViewModel ptvm) { //其他要编写的代码 EHR-EHR=ehrRepository.Find(ehrId); AutoMapper.Mapper.DynamicMap(ptvm,ehr); db.SaveChanges(); }
Mapper.CreateMap<PhysicalTest, PhysicalTestFormViewModel>();
public ActionResult (PhysicalTestFormViewModel ptvm)
{
  //other to wrote codes
EHR ehr = ehrRepository.Find(ehrId);

AutoMapper.Mapper.DynamicMap<PhysicalTestFormViewModel, PhysicalTest>(ptvm, ehr);

db.SaveChanges();
}