For INSERT, UPDATE and DELETE SQL statements executed directly against the database, most database providers return the count of rows
Turns out for me that SET NOCOUNT ON was set in the stored procedure script (by default on SQL Server Management Studio) and SqlCommand.ExecuteNonQuery(); always returned -1.
I just set it off: SET NOCOUNT OFF without needing to use @@ROWCOUNT.
More details found here : SqlCommand.ExecuteNonQuery() returns -1 when doing Insert / Update / Delete