You need to enable JavaScript to run this app. 调用新增公司API时返回的Company Id为0的问题排查
优惠活动
大模型
产品
解决方案
定价
更多

调用新增公司API时返回的Company Id为0的问题排查

问题原因

你返回的CompanyDto的Id字段赋值错误:你使用了入参companyDto.Id,新增场景下前端不会传入ID值,这个字段默认就是0。
数据库自增生成的ID在调用SaveChangesAsync()之后,EF Core会自动把生成的主键值回写到你插入的CompanySetting实体(也就是你代码里的company变量)的Id属性上,直接取这个值即可。

修复方案

有两种可选改法:

方案1:手动修正返回值的Id赋值

把最后return的代码段改成:

return new CompanyDto()
{
    Id = company.Id, // 替换为保存后回写的company实体的Id,而非入参的Id
    CompanyName = companyDto.CompanyName,
    CompanyRegistrationNumber = companyDto.CompanyRegistrationNumber,
    isActive = companyDto.isActive,
    isArchived = companyDto.isArchived,
    UserId = companyDto.UserId
};

方案2:复用已配置的AutoMapper映射,避免手动赋值错误

你已经配置了CompanySetting到CompanyDto的映射规则,直接调用Mapper转换即可,代码更简洁:

// 直接替换原有return逻辑即可
return _mapper.Map<CompanyDto>(company);
额外优化点

你代码里的_context.Users.Update(user)可以直接删除:因为user是从当前DbContext查询出来的实体,本身处于被跟踪状态,你给它的导航属性新增了关联数据,EF Core在保存时会自动识别新增的关联记录,不需要手动调用Update方法。


内容的提问来源于stack exchange,提问作者Jeremiah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:15:07