我在尝试保存新实体时遇到
Breeze.Persistence.EFCore v7.0.1
库的持续问题。我收到的错误消息是:
无法将 NULL 值插入表“dbo.Clients”的“id”列;列不允许为空。插入失败。
情况概述如下:
Guid
属性/列使用 Id
数据类型。breeze.js
自动生成。Id
值已成功传输到服务器并存在于实体中。Id
属性显式标记为[Key]
属性。UPDATE
和 DELETE
工作正常。我已验证服务器上实体的状态,并且它显示
Id
具有有效值。这表明问题可能不在于实体的 Id
分配或传输。我怀疑 Breeze.Persistence.EFCore
可能存在配置或兼容性问题,特别是考虑到其他操作工作正常。
HandleAdded()
方法有一个// HACK
注释。可能有某种关系吗? IsTemporary
属性设置为 true
,但 RealValue
保持为空。
是否有人遇到过类似的问题或了解可能导致此特定 INSERT 操作失败的原因?任何建议或指导将不胜感激。
预先感谢您的协助!
附注这不是我使用 Breeze 开发的第一个项目,所以我相信我做对了大部分事情(像往常一样),所以我相信我已经正确设置了所有内容。
问题是
AutoGeneratedKeyType
是Identity
。您可以在 QuickWatch 屏幕截图中看到这一点。
身份意味着数据库将生成密钥,因此 Breeze 不应尝试在该列中插入任何内容。这就是为什么它使 RealValue 为 NULL。
我认为没有“Guid”的 Breeze AutoGenerateKeyType,但这正是这里所需要的。相反,您需要使用
AutoGeneratedKeyType.None
并在客户端上手动生成您的 Guid。