0

我在 Azure 上使用灯光开关。

当我单击“保存”按钮修改记录中的列后,我得到了

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

我在我的开发机器上使用 VS 2012 调试这个电灯开关应用程序。当我修改相同记录上的保存列然后保存它时,它工作正常并且没有错误。

这个论坛里有人知道是什么原因造成的吗?我应该如何解决它?

我怀疑天蓝色机器与我的开发机器没有相同版本的 EF。但在 Light switch 项目中,客户端和服务器引用我都找不到 EF 在那里引用。所以我不知道如何将我机器上的 EF dll 带到 Azure 机器上。

有人可以给我一些建议吗?

谢谢

克里斯

4

2 回答 2

0

通常这是乐观并发的副作用。这篇文章可以给你在 Lightswitch 中的想法: LightSwitch 2012 Concurrency Enhancements

当它在开发机器上运行而在 Azure 上不起作用时,我猜你的生产数据库中有些地方不对劲。

您还可以查看实体框架:影响了意外的行数(0)

于 2013-02-15T05:13:25.227 回答
0

除了插入/更新触发器之外,有时 SQL 服务器不会为每个新插入/更新的行报告一个 IdentityScope。因此 EF 无法实现受影响的行数。通常,对带有标识列的表的任何插入/更新都会立即选择 scope_identity() 以填充实体框架中的关联值。而不是触发器会导致错过第二步,从而导致插入 0 行错误。

您可以将触发器更改为插入之前或之后,或者通过在其末尾添加以下行来调整触发器:

select [Id] from [dbo].[TableXXX] where @@ROWCOUNT > 0 and [Id] = scope_identity()

在此线程中查找更多详细信息。

于 2013-02-19T00:42:57.597 回答