更新到达SQL Server的查询但不更新记录并且不返回任何错误

时间:2018-05-02 08:54:23

标签: c# sql-server entity-framework

这就是问题所在:

我有一张表,其中更新查询失败。

当用户点击应用程序中的删除按钮时,RowStatus应设置为0而不是1,数据类型为bit。 使用SQL事件探查器,我们可以看到更新查询到达SQL服务器,但它没有在那里运行 - 它不会向应用程序返回任何异常。 我们使用表的PK来标识要更新的行。 我们能够通过Web服务器从应用程序成功地将值插入表中,只有更新查询失败。 我们在应用程序中有muplitple表 - 但问题仅适用于此表。 我们使用实体框架来更新表。

任何人都可以帮忙吗?

这是表结构:

[dbo].[TableName](
[PrimaryKey] [int] IDENTITY(1,1) NOT NULL,
[ForeignKey1] [int] NOT NULL,
[ForeignKey2] [int] NOT NULL,
[RowStatus] [bit] NULL,
[CreatedBy] [int] NULL,
[CreationDate] [datetime2](7) NULL,
[UpdatedBy] [int] NOT NULL,
[UpdatedDate] [datetime2](7) NOT NULL
)

这是我在分析器中看到的查询:

exec sp_executesql N'UPDATE [dbo].[TableName]
SET [RowStatus] = @0, [UpdatedBy] = @1, [UpdatedDate] = @2
WHERE [PrimaryKey] = @3)
',N'@0 bit,@1 int,@2 datetime2(7),@3 int',@0=0,@1=999,@2='2018-05-02 
05:20:16.2795067',@3=30

更新:在我更改dbcontext.savechanges()而不是dbcontext.savechangesasync()以将更改保存到实体后,它开始工作。 有没有人以前遇到过这个问题?

2 个答案:

答案 0 :(得分:1)

如果您正在使用Entity Framework,请尝试清理项目,因为某些缓存可能会阻止您的代码干净地执行。

答案 1 :(得分:1)

我忘记在方法调用中添加'await'关键字。 那就是造成这个问题的原因。