Несопоставленные свойства: _entityWrapper

Не нанесенные на карту участники были найдены. Просмотрите типы и членов ниже. Добавить пользовательское выражение сопоставления, игнорировать, добавить пользовательский преобразователь или изменить тип источника / назначения

Если нет подходящего конструктора, добавьте ctor без аргументов, добавьте необязательные аргументы или отобразите все параметры конструктора.

AutoMapper создал эту карту типов для вас, но ваши типы не могут быть сопоставлены с использованием текущей конфигурации. CustomerDto -> Customer_F18BD0407D7AB3084DFC14364CBC838E797CB114E45768DA5EB22B4A1CC94C26 (список элементов-адресатов) WebApiCollection.DTO.CustomerDto -> System.Data.Entity.DynamicProxies.Customer_F18B79B4D4DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD

Несопоставленные свойства: _entityWrapper

var customerInDb = _dbContext.Customers.SingleOrDefault (p => p.Id == customerDto.Id); if (customerInDb == null) return NotFound ();

            customerInDb = Mapper.Map(customerDto, customerInDb);

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 to Ignore() поле ReworkDetails.

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

Ты пытался?

customerInDb = Mapper.Map<Customer>(customerDto);
Другие вопросы по тегам