AutoMapper отображает значение свойства коллекции из его родительского свойства - PullRequest
1 голос
/ 12 марта 2019

У меня есть две модели, Receipt.cs и ReceiptProduct.cs. Чего я хочу добиться - это сопоставить поля ICollection ReceiptProducts, такие как PurchaseOrderId и ReceiptId, с его родительским Receipt.

Receipt.cs

public class Receipt
    {
        public Guid Id { get; set; }
        public string Reference { get; set; }
        public string PurchaseOrderId { get; set; }
        public virtual ICollection<ReceiptProduct> ReceiptProducts { get; set; }
    }

ReceiptProduct.cs

public class ReceiptProduct
    {
        public Guid Id { get; set; }
        public string ReceiptId { get; set; }
        public string PurchaseOrderId { get; set; }
        public string ProductName { get; set; }
        public string ProductId { get; set; }
        public string Note { get; set; }
    }
  • ReceiptProducts.ReceiptId <= Receipt.Id </p>

  • ReceiptProducts.PurchaseOrderId <= Receipt.PurchaseOrderId </p>

Я попробовал приведенный ниже код. Но я получил ошибку

CreateMap<DataEntities.Receipt, BusinessEntities.Receipt>()
 .ForMember(dest => dest.ReceiptProducts.Select(x=>x.ReceiptId), automapper => automapper.MapFrom(src => src.Id));

Ошибка: AutoMapper.AutoMapperConfigurationException: Custom configuration for members is only supported for top-level individual members on a type.

Как отобразить значения свойств этой коллекции.

1 Ответ

1 голос
/ 12 марта 2019

попробуйте это.

public class ReceiptProduct
{
    public Guid Id { get; set; }
    public string ReceiptId { get; set; }
    public string PurchaseOrderId { get; set; }
    public string ProductName { get; set; }
    public string ProductId { get; set; }
    public string Note { get; set; }

    **public Receipt Receipt { get; set; }**

}

Отображение

CreateMap<DataEntities.ReceiptProduct, BusinessEntities.Receipt>()
.ForMember(dest => x=>x.ReceiptId, opts => opts.MapFrom(src => src.Receipt.Id))
.ForMember(dest => x=>x.PurchaseOrderId , opts => opts.MapFrom(src => src.Receipt.PurchaseOrderId))
.ForMember(dest => x=>x.Reference , opts => opts.MapFrom(src => src.Receipt.Reference ));
...