我有一个C#桌面应用程序,它将行插入sql server数据库。我注意到如果我在Release模式下构建,则行不会出现在数据库中。但如果我在Debug模式下构建,它可以正常工作。可能导致这种情况的原因是什么?
答案 0 :(得分:1)
感谢Blorgbeard指出我可以在发布模式下进行调试!当我切换到发布模式并尝试设置断点时,我注意到执行Insert的代码在Visual Studio中被“灰显”了!代码是:
Debug.Assert(cmd.ExecuteNonQuery() == 1)
显然在发布模式下跳过Debug.Assert。
我通过将其更改为:
来修复它var nRows = cmd.ExecuteNonQuery();
Debug.Assert(nRows == 1)
修改强>
上述解决方案并不理想,因为虽然它现在可以在发布模式下工作,但它只检查调试模式下的返回码。更好的版本是:
if (cmd.ExecuteNonQuery() != 1)
throw new ApplicationException("sql statement failed");