我有InvoiceInputModel
一个ProjectId
属性,它是对Project
实体的引用。理想情况下,我希望 AutoMapper 能够从 映射整个Invoice
实体InvoiceInputModel
,如下所示:
public class InvoiceInputModel
{
public Guid Id { get; set; }
public DateTime Date { get; set; }
public string Reference { get; set; }
public Guid ProjectId { get; set; }
}
显然以下是不好的:
Mapper.CreateMap<InvoiceInputModel, Invoice>()
.ForMember(src => src.Project, opt => opt.MapFrom(
dest => _unitOfWork.CurrentSession.Get<Project>(dest.ProjectId)
)
);
如何告诉 AutoMapper在保持松耦合的同时invoice.Project
应该根据属性映射到Project
实体?ProjectId
InvoiceInputModel
我的发票/编辑InvoiceController
:
[HttpPost]
[Authorize]
public ActionResult Edit(InvoiceInputModel invoiceInputModel)
{
var invoice = _unitOfWork.CurrentSession.Get<Invoice>(invoiceInputModel.Id);
Mapper.Map<InvoiceInputModel, Invoice>(invoiceInputModel, invoice);
invoice.Project = _unitOfWork.CurrentSession.Get<Project>(invoiceInputModel.ProjectId);
// I want AutoMapper to do the above.
_unitOfWork.CurrentSession.SaveOrUpdate(invoice);
_unitOfWork.Commit();
return View(invoice);
}
我发现了一些关于“解析器”和 ResolveUsing 的东西,但我没有使用它的经验。
如何告诉 AutoMapper 这样做,同时保持实体模型、输入模型和视图模型之间的松散耦合?或者,还有更好的方法?