EF Core切换DbContextFactory后添加实体触发唯一键冲突错误
EF Core 切换到DbContextFactory后插入实体触发重复主键冲突的解决办法
问题场景
将EF Core的DbContext注入方式从Scoped改为DbContextFactory后,插入ModificareInregistrare实体时出现数据库主键冲突错误。
错误信息
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details. ---> Npgsql.PostgresException (0x80004005): 23505: duplicate key value violates unique constraint "PK_Departamente"
关键现象
ModificareInregistrare实体的DepartamentId是数据库中已存在的外键值,且实体的Departament属性为null- EF Core仍尝试插入一条新的
Departament记录,触发主键重复约束 - 使用Scoped DbContext时无此问题,仅切换到DbContextFactory后出现
排查与解决
经排查,问题根源在于Modificare类关联的Registru对象包含Departament集合,AutoMapper映射时意外引入了Registru的引用,导致EF Core的变更追踪将关联的Departament识别为新增实体。
修改AutoMapper配置,忽略对Registru引用的映射后,问题彻底解决。
内容的提问来源于stack exchange,提问作者mihnea2kx
相关产品推荐
相关产品推荐

