У меня есть 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 сделать это, сохраняя при этом слабую связь между моими моделями сущностей, входными моделями и моделями просмотра? Или есть лучший способ?