0

我使用电灯开关天青体改记录。出现错误时保存使用电灯开关天青

我修改记录中的一列之后,当我点击保存按钮我

“商店更新,插入或删除语句影响(0)。Entties可能已被修改或删除的行的一个意外的数因为实体加载,刷新ObjectStateManager条目。

我用VS 2012年我的开发机器调试这个光切换应用程序。它工作正常,没有错误,当我修改相同的记录保存列然后保存。

这个论坛有没有人知道什么可能导致这种情况?我应该如何解决它?

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

任何人都可以给我一些这方面的建议?

感谢

克里斯

回答

0

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

当它在开发机器上工作,并且它不在Azure上工作时,我猜测你的生产数据库中有些东西是不正确的。

你也可以看看Entity framework: affected an unexpected number of rows(0)

+0

当它在开发机器上工作时,它指向生产数据库。换句话说,在Azure和我的开发机器上,LightSwitch应用程序指向同一个数据库。它适用于我的开发机器,但在Azure上出现此错误。 – user2074005 2013-02-15 17:53:05

+0

,我在生产环境非常肯定(天青)只有一个错误发生时,没有其他用户的记录既不通过LightSwitch的UI或以其他方式改变任何东西使用它的用户(我自己)。因此在该时间段内没有并发使用数据库。 – user2074005 2013-02-15 18:28:39

+0

问题只在更新中,或者您对新记录有同样的问题?您是否将其部署为Azure上的网站或者它是桌面应用程序? – Ryan 2013-02-16 11:35:10

0

有代替插入/更新触发器,有时SQL服务器不报到的每一个新的插入/更新的行的IdentityScope已。因此EF无法实现受影响的行数。 通常情况下,任何插入/更新到具有标识列的表中后立即选择scope_identity()来填充实体框架中的关联值。而不是触发器会导致第二步被错过,导致0行插入错误。

你可以改变你的触发是插入之前或之后或在它的末尾添加以下行调整你的触发器:

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

thisthis线程了解详情。

+0

在这种情况下可以解释什么原因触发器在Dev框上工作正常只在云中有问题? – user2074005 2013-02-20 03:43:47

+0

尝试从[dbo]添加选择[Id]。[TableXXX]其中@@ ROWCOUNT> 0和[Id] = scope_identity()仍然有相同的错误。 – user2074005 2013-02-21 20:29:42

+0

您可以将触发器更改为(插入/更新)触发器之前还是之后? – Ryan 2013-02-21 23:02:31