Uso de parámetros de salida de procedimientos almacenados en C #

Tengo un problema al devolver un parámetro de salida de un procedimiento almacenado de Sql Server a una variable C #. He leído las otras publicaciones relacionadas con esto, no solo aquí sino en otros sitios, y no puedo hacer que funcione. Esto es lo que tengo actualmente. Actualmente solo estoy tratando de imprimir el valor que vuelve. El siguiente código devuelve un valor nulo. Lo que estoy intentando devolver es la clave principal. He intentado usar@@IDENTITY ySCOPE_INDENTITY() (es decir.SET @NewId = SCOPE_IDENTITY()).

Procedimiento almacenado:

CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),

    @NewId int OUTPUT
AS
BEGIN

    INSERT into [dbo].[Contracts] (ContractNumber)
        VALUES (@ContractNumber)

    Select @NewId = Id From [dbo].[Contracts] where ContractNumber = @ContractNumber
END

Abriendo la base de datos:

pvConnectionString = "Server = Desktop-PC\\SQLEXPRESS; Database = PVDatabase; User ID = sa;
    PASSWORD = *******; Trusted_Connection = True;";

try
{
    pvConnection = new SqlConnection(pvConnectionString);
    pvConnection.Open();
}
catch (Exception e)
{
    databaseError = true;
}

Ejecutando el comando:

pvCommand = new SqlCommand("usp_InsertContract", pvConnection);

pvCommand.Transaction = pvTransaction;
pvCommand.CommandType = CommandType.StoredProcedure;    

pvCommand.Parameters.Clear();
pvCommand.Parameters.Add(new SqlParameter("@ContractNumber", contractNumber));

SqlParameter pvNewId = new SqlParameter();
pvNewId.ParameterName = "@NewId";
pvNewId.DbType = DbType.Int32;
pvNewId.Direction = ParameterDirection.Output;
pvCommand.Parameters.Add(pvNewId);

try
{
    sqlRows = pvCommand.ExecuteNonQuery();

    if (sqlRows > 0)
        Debug.Print("New Id Inserted =  ", 
            pvCommand.Parameters["@NewId"].Value.ToString()); 
    }
    catch (Exception e)
    {
        Debug.Print("Insert Exception Type: {0}", e.GetType());
        Debug.Print("  Message: {0}", e.Message);
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta