Entity framework 使用Azure上的灯开关保存修改的记录时出错

Entity framework 使用Azure上的灯开关保存修改的记录时出错,entity-framework,azure,save,record,visual-studio-lightswitch,Entity Framework,Azure,Save,Record,Visual Studio Lightswitch,我正在Azure上使用灯光开关 当我点击保存按钮时,我修改了记录中的一列 Store update、insert或delete语句影响了意外的行数(0)。在加载实体后,可能已修改或删除了实体,请刷新ObjectStateManager条目 我在我的开发机器上使用VS 2012调试这个灯开关应用程序。当我修改相同记录上的保存列并保存它时,它工作正常,没有错误 这个论坛里有没有人知道是什么原因造成的?我应该如何解决这个问题 我怀疑azure机器没有与我的开发机器相同版本的EF。但是在Light sw

我正在Azure上使用灯光开关

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

Store update、insert或delete语句影响了意外的行数(0)。在加载实体后,可能已修改或删除了实体,请刷新ObjectStateManager条目

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

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

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

有人能给我一些建议吗

谢谢


Chris

通常这是乐观并发的副作用。本文可以在Lightswitch中为您提供有关它的想法:

当它在dev机器上工作而在Azure上不工作时,我猜您的生产数据库中有一些不正确的地方


您还可以查看使用insert/update触发器,有时SQL server不会为每个新插入/更新的行报告标识范围。因此EF无法了解受影响的行数。 通常,对具有标识列的表进行任何插入/更新后,都会紧接着选择范围_identity(),以填充实体框架中的关联值。instead of触发器会导致错过第二步,从而导致插入0行错误

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

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

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

当它在开发机器上工作时,它指向生产数据库。换句话说,在Azure和我的开发机器上,LightSwitch应用程序指向同一个数据库。它在我的开发机器上工作,但在Azure上出现错误。我非常确定在生产环境(Azure)中只有一个用户(我自己)当发生错误时使用它,并且没有其他用户通过lightswitch UI或其他方式更改记录上的任何内容。因此,在该时间段内,不会同时使用数据库。问题是仅出现在更新中,还是您对新记录也有同样的问题?您是否将其部署为Azure上的网站或桌面应用程序?I刚刚尝试在生产中为该表添加一条记录。它会收到相同的错误消息。我还尝试在我的开发设备上向该表添加一条记录,结果成功。在我通过开发设备添加该记录后,我尝试从生产站点删除该记录,它也会收到相同的错误。但我从我的开发设备上成功删除了该记录。并且我成功地删除了该记录s部署为云服务。我还尝试在另一个表中创建新记录和更新它在生产中正常工作这两个表之间的区别是表get error有一个insert触发器和一个update触发器。它在dev box上正常工作指向SQL Azure上的生产数据库在本例中可以解释Rigger在Dev box上工作正常,但在云中存在此问题?已尝试从[dbo].[TableXXX]添加select[Id],其中@@ROWCOUNT>0和[Id]=scope\u identity()仍存在相同的错误。能否将触发器更改为在(插入/更新)触发器之前或之后?