De acordo com o MSDN, DbCommand..ExecuteNonQuery sempre retornará -1 para chamadas de procedimento armazenado:
Se me lembro corretamente dos meus dias de uso de muitos procs armazenados, acredito que você precisaria usar um argumento de saída para retornar coisas como o número de linhas atualizadas.