找到未映射的成员。在下面查看类型和成员。 添加自定义映射表达式,忽略,添加自定义解析器或修改源/目标类型
AutoMapper为您创建了此类型映射,但是无法使用当前配置来映射您的类型。 CustomerDto-> Customer_F18BD0407D7AB3084DFC14364CBC838E797CB114E45768DA5EB22B4A1CC94C26(目标成员列表) WebApiCollection.DTO.CustomerDto-> System.Data.Entity.DynamicProxies.Customer_F18BD0407D7AB3084DFC14364CBC838E797CB114E45768DA5EB22B4A1CC94C26(目标成员列表)
未映射的属性: _entityWrapper
var customerInDb = _dbContext.Customers.SingleOrDefault(p => p.Id == customerDto.Id); 如果(customerInDb == null) 返回NotFound();
customerInDb = Mapper.Map(customerDto, customerInDb);
答案 0 :(得分:0)
您尝试过吗?
customerInDb = Mapper.Map<Customer>(customerDto);
答案 1 :(得分:0)
当 Dto 和 Entity 类之间的字段不对齐时,就会发生这种情况。例如。我的 Dto 包含两个字段
public class ReworkDto: FullAuditEntity
{
public string WorkOrderNumber { get; set; }
public string WorkOrderBarcode { get; set; }
}
这两个字段也在实体类中,但实体类还包含导航属性(ReworkDetails)
[Table("Quality_Rework")]
public class QualityRework : FullAuditEntity
{
[Required, Column(Order = 8)]
public virtual string WorkOrderNumber { get; set; }
[Required, Column(Order = 9)]
public virtual string WorkOrderBarcode { get; set; }
public virtual ICollection<QualityReworkDetail> ReworkDetails { get; set; }
}
如果我尝试使用以下代码进行更新,则会出现此帖子的特定错误
private void Update(ReworkDto entityDto)
{
try
{
var entityToUpdate = DbContext.QualityRework.FirstOrDefault(x => x.Id == entityDto.Id);
var updateRework = _autoMapper.Map(entityDto, entityToUpdate);
}
catch (Exception exc)
{
Console.WriteLine(exc);
throw;
}
}
为了避免出现错误,我需要 CreateMap (AutoMapperModule.cs),指示 AutoMapper 在 Dto -> Entity to Ignore() ReworkDetails 字段之间映射时。
CreateMap<domain.DTO.Quality.ReworkDto, infrastructure.Entities.Quality.QualityRework>()
.ForMember(dest => dest.ReworkDetails, opt => opt.Ignore());