ChangeConflictException:行未找到或未更改 - 数据库无计数 属性

ChangeConflictException: Row not found or changed - Database NO COUNT property

是的...我找到了 ChangeConflictException: Row not found or changed 问题的罪魁祸首,该问题只发生在生产环境中。 这完全是关于 NO COUNT 属性 在生产数据库服务器中被设置为 ON -

此 属性 在非生产环境中设置为关闭,因此我在非生产环境中没有收到任何错误。

问题是我们无法在生产服务器上将 NO COUNT 属性 设置为 OFF 因为同一台服务器上有太多其他客户端的数据库。
因此,在更新对象 -

之前,我更新了我的代码以包含 SET NOCOUNT OFF
var emp = GetEmployees(empId).FirstOrDefault();

dbContext.ExecuteQuery<int>("SET NOCOUNT OFF SELECT 1");

emp.Address = newAddress;
dbContext.SubmitChanges(); // was getting error here

但是,如果这是解决这个问题的最佳方案,我不是很确定。
谁能请教一下。

谢谢!

我环顾四周,发现执行此 SET NOCOUNT OFF 查询似乎是规避服务器范围 nocount on 设置的公认做法.

但是,我没有找到在上下文中一劳永逸地完成此操作的解决方案,尽管这是放置此语句的合适位置:

public override void SubmitChanges(ConflictMode failureMode)
{
    ExecuteQuery<object>("SET NOCOUNT OFF");
    base.SubmitChanges(failureMode);
}

public 方法 SubmitChanges()(不带参数)传递给这个可覆盖的 SubmitChanges 方法(带参数)。