EF Core更新数据时InternalKey字段无法保存,是否为关键字导致?
问题排查结论
InternalKey不属于SQL通用标准规定的保留关键字,该列无法更新大概率是实体映射、ORM配置、或者仓储层逻辑导致的,你可以按以下方向逐一排查:
- 检查ORM实体配置:确认
SysDefaultPostingKeys类的InternalKey属性是否被标记为[NotMapped]、只读,或者在FluentAPI配置中设置了IsUpdate(false)这类禁止更新的规则。你可以开启ORM的SQL日志打印,看生成的UPDATE语句中是否包含InternalKey字段的赋值逻辑,如果生成的语句里根本没带这个字段,肯定是映射层面的问题。 - 检查数据库侧限制:确认你所用的数据库是否自定义了
InternalKey为保留词,或者该列被设为计算列、主键、有强制不可修改的触发器约束、外键关联限制。你可以直接手动在数据库执行UPDATE语句修改该列值,确认数据库层面本身允许修改。 - 检查仓储层Update方法逻辑:看你封装的
_defaultpostingkeysrepository.Update方法有没有做自定义字段过滤,比如只更新指定白名单字段、或者自动过滤带Key后缀的字段,没把InternalKey纳入允许更新的范围。 - 验证赋值逻辑正确性:在调用Update方法前加断点,确认
_mapeddpkeys.InternalKey已经被正确赋值,没有被AutoMapper的映射规则覆盖、或者vmdpkeys.DefaultPostingKey.Replace处理后得到空值的情况。
内容的提问来源于stack exchange,提问作者Zia
相关产品推荐
相关产品推荐

