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