当我想使用DTO创建实体时,我想获取最近插入的实体在我控制器中的DTO中的ID。
控制器:
public ActionResult Create(HotelsViewModel hotelsViewModel)
{
if (ModelState.IsValid)
{
HotelsDTO hotelDTO = _mapper.Map<HotelsDTO>(hotelsViewModel);
_hotelService.Create(hotelDTO);
_hotelService.AddHotelAmenities(hotelDTO.Id, hotelsViewModel.SelectedAmenities);
return RedirectToAction("Index");
}
return View(hotelsViewModel);
}
服务:
要在我的控制器中检索Id,我应该将Create方法的返回类型更改为整数还是有其他方法可以使其工作?
public void Create(TDTO entity)
{
T t = _mapper.Map<T>(entity);
_repository.Create(t);
_unitOfWork.Commit();
}
在更改了savechanges之后,t的id已经设置,但是我无法在我的DTO对象中检索到控制器中的id。
有什么建议吗?
答案 0 :(得分:2)
您可以在提交更改后立即添加entity.Id = t.Id;
,即紧接在该行之后:_unitOfWork.Commit();