You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core 7 SaveChangesAsync抛出TempValuePersists异常求助

EF Core 7 TempValuePersists异常排查方向

针对你遇到的批量插入后单条记录主键未从临时值更新的问题,可从以下几个方向排查:

  • 检查实体主键配置
    确认QuoteOrContractRole的主键字段(如Id)的数据库生成配置是否正确:

    • 验证数据注解是否配置了[Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    • 或Fluent API是否设置了.HasKey(r => r.Id).ValueGeneratedOnAdd()
    • 排查实体构造函数或属性默认值是否手动给主键赋了非临时值,干扰EF的自增逻辑
  • 数据库层验证

    • 直接查询数据库中这条异常记录的实际主键值,确认是否为合法的自增值,无重复或异常
    • 检查表的自增序列(如SQL Server的IDENTITY、PostgreSQL的SERIAL)是否存在断裂,是否有手动插入主键值的操作导致序列紊乱
  • 上下文跟踪与批量操作冲突

    • 将AddRangeAsync替换为循环调用AddAsync逐个插入,排查是否批量操作导致上下文跟踪异常
    • 检查项目中是否存在SaveChangesInterceptor或全局过滤器,是否在拦截逻辑中修改了实体状态或主键值,干扰了EF对主键返回值的处理
  • 异常记录的数据特殊性

    • 对比这条记录与其他正常记录的字段值,排查是否存在特殊值(如null、超长内容、特殊字符)导致EF无法正确读取数据库返回的主键
    • 检查原数据originalProjectRoles中对应这条记录的RoleQuantities是否存在异常(虽然新实体未复制该关联,但原数据的异常可能间接影响EF处理)
  • EF Core版本bug排查
    确认使用的EF Core 7具体版本,查询官方GitHub Issues,排查是否存在批量插入后主键未更新的已知bug,必要时升级到对应版本的最新补丁包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:23:35