エンティティへの参照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)
)
);
緩い結合を維持しながら、プロパティに基づいてエンティティinvoice.Project
にマップする必要があるAutoMapperにどのように指示しますか?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);
}
「Resolvers」とResolveUsingについて何か見つけましたが、使った経験がありません。
エンティティモデル、入力モデル、およびビューモデル間の緩い結合を維持しながら、これを行うようにAutoMapperに指示するにはどうすればよいですか?それとももっと良い方法はありますか?