首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自动映射程序将数据反向映射到

使用自动映射程序将数据反向映射到
EN

Stack Overflow用户
提问于 2012-10-26 19:45:41
回答 1查看 1K关注 0票数 0

根据下面的代码,有没有办法让Automapper来做这件事,而不是手动设置属性?我正在努力避免在Mapper.CreateMap中进行一对一的映射,因为我经常在Contract中添加和删除字段,并且此时必须记住使用更改来更新此方法。

代码语言:javascript
复制
private void MapModelToContract(ContractDto model, Contract contract)
        {
            contract.Id = model.Id;
            contract.ContractDetail.BuyerCornhouseName = model.ContractDetailBuyerCornhouseName;
            contract.ContractDetail.CnoCornLtdToBuyer = model.ContractDetailCnoCornLtdToBuyer;
            contract.ContractDetail.CnoCornPartToCornLtd = model.ContractDetailCnoCornPartToCornLtd;
            contract.ContractDetail.CnoSellerCornLtd = model.ContractDetailCnoSellerCornLtd;
            contract.ContractDetail.CnoSellerCornPart = model.ContractDetailCnoSellerCornPart;
            contract.ContractDetail.Commission = model.ContractDetailCommission;
            contract.ContractDetail.ContractPrice = model.ContractDetailContractPrice;
            contract.ContractDetail.SalesPriceToCornLtd = model.ContractDetailSalesPriceToCornLtd;
            contract.ContractDetail.ContractedQuantity = model.ContractDetailContractedQuantity;
            contract.ContractDetail.CostWarehouseToFob = model.ContractDetailCostWarehouseToFob;
            contract.ContractDetail.Date = model.ContractDetailDate;
            contract.ContractDetail.DeliveryDate = model.ContractDetailDeliveryDate;
            contract.ContractDetail.FinalBuyerName = model.ContractDetailFinalBuyerName;
            contract.ContractDetail.FinalSalesPrice = model.ContractDetailFinalSalesPrice;
            contract.ContractDetail.Grade = model.ContractDetailGrade;
            contract.ContractDetail.Notes = model.ContractDetailNotes;
            contract.ContractDetail.PayableQuantity = model.ContractDetailPayableQuantity;
            contract.ContractDetail.SalesShipmentPeriod = model.ContractDetailSalesShipmentPeriod;
            contract.ContractDetail.SellerName = model.ContractDetailSellerName;
            contract.ContractDetail.ToBePaidBy = model.ContractDetailToBePaidBy;
            contract.ContractDetail.SalesBasis = model.ContractDetailSalesBasis;
            contract.ContractDetail.SalesFreightValue = model.ContractDetailSalesFreightValue;

            contract.CurrencyContract.Date = model.CurrencyContractDate;
            contract.CurrencyContract.ExchangeRate = model.CurrencyContractExchangeRate;
            contract.CurrencyContract.Number = model.CurrencyContractNumber;
            contract.CurrencyContract.Value = model.CurrencyContractValue;
            contract.CurrencyContract.IsAcc = model.CurrencyContractIsAcc;
            contract.CurrencyContract.RepaidOn = model.CurrencyContractRepaidOn;
            contract.CurrencyContract.RepaymentDate = model.CurrencyContractRepaymentDate;

            contract.Discounts.Reason = model.DiscountsReason;
            contract.Discounts.Value = model.DiscountsValue;

            contract.DocumentControl.GuaranteeLetterReceived = model.DocumentControlGuaranteeLetterReceived;
            contract.DocumentControl.PhotosReceived = model.DocumentControlPhotosReceived;

            contract.GoodsStatus.ContainerNumber = model.GoodsStatusContainerNumber;
            contract.GoodsStatus.EtaPort = model.GoodsStatusEtaPort;
            contract.GoodsStatus.ExpectedDeliveryDate = model.GoodsStatusExpectedDeliveryDate;
            contract.GoodsStatus.Port = model.GoodsStatusPort;
            contract.GoodsStatus.ShippedStatus = model.GoodsStatusShippedStatus;
            contract.GoodsStatus.VesselDeadline = model.GoodsStatusVesselDeadline;
            contract.GoodsStatus.VesselName = model.GoodsStatusVesselName;
            contract.GoodsStatus.HasSellerConfirmedRelease = model.GoodsStatusHasSellerConfirmedRelease;
            contract.GoodsStatus.ReceivedShippingInstructions = model.GoodsStatusReceivedShippingInstructions;
            contract.GoodsStatus.Notes = model.GoodsStatusNotes;

            contract.NotaFiscalCornPart.Date = model.NotaFiscalCornPartDate;
            contract.NotaFiscalCornPart.ExchangeRate = model.NotaFiscalCornPartExchangeRate;
            contract.NotaFiscalCornPart.Number = model.NotaFiscalCornPartNumber;

            contract.NotaFiscalSeller.Date = model.NotaFiscalSellerDate;
            contract.NotaFiscalSeller.GoodsReleased = model.NotaFiscalSellerGoodsReleased;
            contract.NotaFiscalSeller.Number = model.NotaFiscalSellerNumber;

            contract.TransferToSeller.Date = model.TransferToSellerDate;
            contract.TransferToSeller.TransferredFrom = model.ContractDetailBuyerCornhouseName;
            contract.TransferToSeller.Value = model.TransferToSellerValue;

            contract.CommissionLawyer.IsPaid = model.CommissionLawyerIsPaid;
        }
EN

回答 1

Stack Overflow用户

发布于 2012-11-13 14:40:01

下面的映射器适用于您。

如果源(ContractDto)和目标(Contract)具有相同的属性名称。

代码语言:javascript
复制
Mapper.CreateMap<ContractDto, Contract>(); // Maps if ContractDto & Contract have same property names

如果源(ContractDto)和目标(Contract)具有不同的属性名称。然后

代码语言:javascript
复制
Mapper.CreateMap<ContractDto, Contract>()
    .ForMember(destination => destination.BuyerCornhouseName, options => options.MapFrom(source => source.ContractDetailBuyerCornhouseName))
    .ForMember(destination => destination.CnoCornLtdToBuyer, options => options.MapFrom(source => source.ContractDetailCnoCornLtdToBuyer));

    // Explicitly you have specify for other properties also
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13086334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档