存储更新、插入或删除语句影响了意外的行数(0)

本文关键字:意外 影响 更新 插入 语句 删除 存储 | 更新日期: 2023-09-27 18:01:42

当我试图保存对我的两个实体的上下文所做的更改时,我得到以下错误。

存储更新、插入或删除语句受意外影响行数(0)。实体可能被修改或删除实体被加载。刷新ObjectStateManager表项。

基于其他解决方案,我不认为这是并发问题,因为我开发的是单用户环境,并且提供了所有必填字段。我不能从分析器捕获我的查询,因为我使用的是SQL Azure数据库。

存储更新、插入或删除语句影响了意外的行数(0)

我发现我的表上有以下索引:

CREATE UNIQUE NONCLUSTERED INDEX [IX_Item_Barcode] ON [dbo].[Item]
(
    [BarCodeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = ON, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO

但是我的BarcodeID字段在表中声明为可空。因此,一旦我尝试添加另一个具有空白BarcodeID或重复值的记录,它将抛出上述错误。由于我使用了选项IGNORE_DUP_KEY = ON,我希望绕过任何错误。

https://msdn.microsoft.com/en-us/library/ms186869.aspx如下所示:

:当将重复的键值插入到唯一索引中时,将出现一条警告消息。只有违反唯一性约束的行才会失败。

:当将重复的键值插入到唯一索引中时,将出现错误消息。整个INSERT操作将被回滚。

所以我们需要关闭这个选项