C#DTO获取实体ID

时间:2016-09-14 09:57:11

标签: c# entity-framework dto

当我想使用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。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以在提交更改后立即添加entity.Id = t.Id;,即紧接在该行之后:_unitOfWork.Commit();