C# 关于ExecuteNonQuery()总是返回-1的解决方案

遇到一个bug,C#代码如下:

DbCommand sqlCommand = database.GetStoredProcCommand("P_UserLoginLog_Update");
database.AddInParameter(sqlCommand, "@fid", DbType.Guid, model.fid);
database.AddInParameter(sqlCommand, "@fUserID", DbType.String, model.fUserID);
database.AddInParameter(sqlCommand, "@fAffiliateId", DbType.Guid, model.fAffiliateId);
return (database.ExecuteNonQuery(sqlCommand) > 0);
查看数据库发现成功修改了数据,正确应该是返回受影响的行数,但database.ExecuteNonQuery(sqlCommand)返回的是-1

懵逼

后面百度才知道是因为我存储过程写了SET NOCOUNT ON;它会阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。

把它改成SET NOCOUNT OFF就可以了。

当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;

posted @ 2021-06-06 23:53  哈哈咖咖  阅读(605)  评论(0编辑  收藏  举报