【发布时间】:2018-11-10 23:27:33
【问题描述】:
标题中的错误目前仅在我的 QA 环境中发生,而不是在我的 DEV 环境中。我已将本地计算机指向 QA 环境,运行 SQL 跟踪,并且可以 1) 重现错误并 2) 查看正在生成的实际 SQL 代码。
我不明白的是,这样的错误怎么可能在更新时发生?这是我的代码:
var investigation = await (
from ti in DbContext.Investigation
where ti.Id == model.InvestigationId
select ti
).SingleAsync();
investigation.QueueId = model.QueueId;
var result = await DbContext.SaveChangesAsync();
return result;
我最初认为第一行(查询)返回了多个结果,这是有道理的。但是,错误发生在var result = await DbContext.SaveChangesAsync(); 行上。有人可以指出我正确的方向来解决这个问题吗? SQL Server Profiler 提取的我的 SQL 查询:
exec sp_executesql N'SET NOCOUNT ON;
UPDATE [Investigation] SET [QueueId] = @p0
WHERE [Id] = @p1;
SELECT @@ROWCOUNT;
',N'@p1 bigint,@p0 smallint',@p1=7863,@p0=4
【问题讨论】:
-
我怀疑一个更新触发器有一个导致错误的错误。
-
@Dan Guzman -- 废话谢谢。请留下您的评论作为答案,我很乐意接受!所以我不知道这是怎么发生的,但是一堆插入语句以某种方式放置在我的触发器中,但是在 END 关键字之后。不知何故,这只发生在质量检查中;在 PROD 或 DEV 中不存在。但是从那里删除那些垃圾解决了这个问题!
-
@Dan Guzman -- 您能否在回答中详细说明您是如何认为这是问题的原因?
-
无关的触发器代码可能是因为有人在更改触发器时错过了一个 GO 批处理终止符,因此批处理的其余部分包含在触发器中而不是单独执行。
标签: c# sql-server entity-framework-core asp.net-core-webapi sqlexception