【问题标题】:Unmapped properties: _entityWrapper未映射的属性:_entityWrapper
【发布时间】:2019-03-30 17:58:30
【问题描述】:

找到未映射的成员。查看下面的类型和成员。 添加自定义映射表达式、忽略、添加自定义解析器或修改源/目标类型

对于没有匹配的构造函数,添加一个无参数的ctor,添加可选参数,或者映射所有的构造函数参数

AutoMapper 为您创建了此类型映射,但您的类型无法使用当前配置进行映射。 CustomerDto -> Customer_F18BD0407D7AB3084DFC14364CBC838E797CB114E45768DA5EB22B4A1CC94C26(目标成员列表) WebApiCollection.DTO.CustomerDto -> System.Data.Entity.DynamicProxies.Customer_F18BD0407D7AB3084DFC14364CBC838E797CB114E45768DA5EB22B4A1CC94C26(目标成员列表)

未映射的属性: _entityWrapper

var customerInDb = _dbContext.Customers.SingleOrDefault(p => p.Id == customerDto.Id); if (customerInDb == null) 返回未找到();

            customerInDb = Mapper.Map(customerDto, customerInDb);

【问题讨论】:

  • 您找到解决方案了吗?

标签: entity-framework-6 asp.net-web-api2 dbcontext automapper-8


【解决方案1】:

你试过了吗?

customerInDb = Mapper.Map<Customer>(customerDto);

【讨论】:

  • 是的。但得到了相同的结果。
【解决方案2】:

当 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 与 Ignore() ReworkDetails 字段之间进行映射时。

CreateMap<domain.DTO.Quality.ReworkDto, infrastructure.Entities.Quality.QualityRework>()
                .ForMember(dest => dest.ReworkDetails, opt => opt.Ignore());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2019-02-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多