使用Azure上的Light Switch保存修改记录时获取错误

时间:2013-02-15 00:43:41

标签: entity-framework azure save record visual-studio-lightswitch

我在Azure上使用Light开关。

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

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

我在我的开发机器上使用VS 2012调试这个灯光开关应用程序。

,当我修改相同记录中的保存列时,它工作正常,没有错误。

这个论坛中是否有人知道可能导致这种情况的原因?我应该如何解决它?

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

有人可以就此提出一些建议吗?

由于

克里斯

2 个答案:

答案 0 :(得分:0)

通常它是乐观并发的副作用。本文可以在Lightswitch中为您提供它的想法: LightSwitch 2012 Concurrency Enhancements

当它在开发机器上运行并且它无法在Azure上运行时,我猜你的生产数据库中有些东西是不对的。

您还可以查看Entity framework: affected an unexpected number of rows(0)

答案 1 :(得分:0)

有时,SQL Server不会为每个新插入/更新的行报告IdentityScope,而不是插入/更新触发器。因此EF无法实现受影响的行数。 通常,对具有标识列的表进行任何插入/更新后,应紧接着选择scope_identity()以填充实体框架中的关联值。而不是触发器导致错过第二步,这导致插入0行错误。

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

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

thisthis主题中查找更多详细信息。