使用 Breeze.Persistence.EFCore 进行 INSERT 操作时出现问题

问题描述 投票:0回答:1

我在尝试保存新实体时遇到

Breeze.Persistence.EFCore v7.0.1
库的持续问题。我收到的错误消息是:

无法将 NULL 值插入表“dbo.Clients”的“id”列;列不允许为空。插入失败。

情况概述如下:

  • 保存新实体时会出现此问题。
  • 我正在为
    Guid
    属性/列使用
    Id
    数据类型。
  • Id值由客户端
    breeze.js
    自动生成。
  • Id
    值已成功传输到服务器并存在于实体中。
  • Id
    属性显式标记为
    [Key]
    属性。
  • UPDATE
    DELETE
    工作正常。

我已验证服务器上实体的状态,并且它显示

Id
具有有效值。这表明问题可能不在于实体的
Id
分配或传输。我怀疑
Breeze.Persistence.EFCore
可能存在配置或兼容性问题,特别是考虑到其他操作工作正常。

调试它直到

HandleAdded()
方法有一个
// HACK
注释。可能有某种关系吗?
IsTemporary
属性设置为
true
,但
RealValue
保持为空。

是否有人遇到过类似的问题或了解可能导致此特定 INSERT 操作失败的原因?任何建议或指导将不胜感激。

预先感谢您的协助!

附注这不是我使用 Breeze 开发的第一个项目,所以我相信我做对了大部分事情(像往常一样),所以我相信我已经正确设置了所有内容。

.net entity-framework-core breeze
1个回答
0
投票

问题是

AutoGeneratedKeyType
Identity
。您可以在 QuickWatch 屏幕截图中看到这一点。

身份意味着数据库将生成密钥,因此 Breeze 不应尝试在该列中插入任何内容。这就是为什么它使 RealValue 为 NULL。

我认为没有“Guid”的 Breeze AutoGenerateKeyType,但这正是这里所需要的。相反,您需要使用

AutoGeneratedKeyType.None
并在客户端上手动生成您的 Guid。

© www.soinside.com 2019 - 2024. All rights reserved.