【问题标题】:EF 6 Store update, insert, or delete statement affected an unexpected number of rows (0)EF 6 存储更新、插入或删除语句影响了意外的行数 (0)
【发布时间】:2015-07-08 15:25:43
【问题描述】:

当我尝试保存对我的两个实体的上下文所做的更改时出现以下错误。

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

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

【问题讨论】:

  • 你确定你的表没有时间戳列吗?
  • no...此表没有时间戳列

标签: c# entity-framework


【解决方案1】:

我发现我的桌子上有以下索引:

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 操作将被回滚。

因此,解决方法是关闭此选项

【讨论】:

  • 您...发布了问题并在最初发布问题后的一分钟内回答了所有问题?您的意思是对问题进行编辑吗?
  • @Kritner,我将其作为知识分享以帮助他人。上面的答案对我有用。但我愿意寻求更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
相关资源
最近更新 更多