Entity Framework Core添加引用类型列表时报未找到项及并发异常
问题原因解析
1. 实体关联关系配置缺失或错误
MySecondRefrenceType要么未定义指向MyRefrenceType的外键属性,要么没通过DataAnnotations或Fluent API明确配置一对多关系。这种情况下,EF Core无法识别子实体与父实体的关联逻辑,当你往父实体的MySecondRefrenceTypes集合添加子实体时,EF没法为子实体设置正确的外键值,ChangeTracker找不到对应的父实体跟踪记录,就会显示[<not found>, <not found>, ...]。
2. 父实体查询使用了无跟踪模式
如果查询MyRefrenceType时调用了AsNoTracking(),DbContext不会跟踪这个父实体。当你往它的集合添加子实体时,EF Core会误以为父实体是新创建的,尝试重新插入父实体(或生成错误的更新语句)。但父实体的主键已经存在于数据库中,数据库操作返回影响0行,EF Core就将这个错误转换为DbUpdateConcurrencyException。
3. 子实体的主键/外键映射错误
比如MySecondRefrenceType的主键被配置为数据库自动生成(如自增),但你手动设置了主键值;或者外键属性的命名不符合EF Core默认约定,又未手动配置映射规则。这会导致EF生成的SQL语句无法正确插入子实体,最终触发“预期影响1行实际0行”的异常。
内容的提问来源于stack exchange,提问作者Ethan Kharitonov
相关产品推荐
相关产品推荐

