C# DTO 获取实体的 Id

C# DTO get Id of Entity

当我想使用 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 方法的 return 类型更改为整数,还是有其他方法可以实现此目的?

public void Create(TDTO entity)
{
    T t = _mapper.Map<T>(entity);
    _repository.Create(t);
    _unitOfWork.Commit();
}

保存更改被命中后,t 的 ID 被设置,但我无法在控制器中检索我的 DTO 对象中的 ID。

有什么建议吗?

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