asp.net-core - 映射两个对象(带列表)的问题
问题描述
我正在寻找我的问题的解决方案......可能我的 Shifts 类无法映射。
我有实体类 Worker:
public class Worker
{
public int Id { get; set; }
[Required]
[MaxLength(50)]
public string Name { get; set; }
[Required]
[MaxLength(50)]
public string LastName { get; set; }
[MaxLength(200)]
public string PhotoFilePath { get; set; }
public Workplace Workplace { get; set; }
public int WorkplaceId { get; set; }
public List<Service> Services { get; set; }
public List<Shift> Shifts { get; set; }
public IEnumerable<Worker> ToList()
{
throw new NotImplementedException();
}
}
和模型WorkerModel:
public int Id { get; set; }
[Required]
[DisplayName("Imię")]
public string Name { get; set; }
[DisplayName("Nazwisko")]
public string LastName { get; set; }
[Display(Name = "Zdjęcie")]
public IFormFile Photo { get; set; }
public string PhotoFilePath { get; set; }
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int WorkplaceId { get; set; }
public List<ServiceModel> Services { get; set; }
public List<ShiftModel> Shifts { get; set; }
}
我的默认映射器配置文件:
//Mapping workers
CreateMap<Worker, WorkerModel>();
CreateMap<WorkerModel, Worker>();
当我在操作中尝试将模型映射到实体类时:
Worker worker = _mapper.Map<Worker>(model);
我有一个问题:
AutoMapperMappingException: Missing type map configuration or unsupported mapping.
解决方案
这是由不同的映射类型引起的。以房产Service
为例。
该资源是一种Service
.
但目的地是一种ServiceModel
.
所以,他们需要被转换。这是一个演示。
我根据您的模型创建Service
and 。ServiceModel
public class Service
{
public int serviceID { get; set; }
public string myservice { get; set; }
}
public class ServiceModel
{
public int serviceID { get; set; }
public string myservice { get; set; }
}
这是映射关系。
public class AutomapProfile : Profile
{
public AutomapProfile()
{
CreateMap<Worker, WorkerModel>();
CreateMap<WorkerModel, Worker>()
.ForMember(m => m.Services, x => x.MapFrom(y => y.Services.Select(a=>
new Service
{
serviceID=a.serviceID,
myservice=a.myservice
})));
}
}
这是映射方法。
public IActionResult Index()
{
var model = new WorkerModel
{
Id=1,
Name="names",
//...
Services = new List<ServiceModel>
{
new ServiceModel{ serviceID=1, myservice="service1"},
new ServiceModel{ serviceID=2, myservice="service2"},
},
//...
};
Worker worker = _mapper.Map<Worker>(model);
return Ok(worker);
}
结果。
推荐阅读
- python-3.x - Python:当从包含 pandas 数据帧数据的字符串变量中获取 unicode 字符时,re.sub 会给出不同的输出
- amazon-web-services - 将一个域指向或重定向到另一个域
- reactjs - 在 Firebase onAuthStateChanged 填充状态导致再次登录页面之前重定向到私有路由
- javascript - 使用vue js显示一个循环的聊天列表卡片
- excel - 从给定网站抓取数据时出错
- function - Spark Window 功能,这是 Spark 中的错误吗?
- node.js - 在 POST API 请求有效负载中附加文件
- angular - 为什么同一模块中的组件不使用 router.navigate 加载?
- android - Android (Delphi):阐明远程推送通知和线程
- spring-boot - 在 Spring-Boot 中使用 For-Loop 将所有数据写入 CSV