C # y SQL Server: la inserción / actualización solo se ejecuta realmente al depurar

Tengo una API bastante simplista para agregar y luego actualizar una pequeña tabla en SQL Server. Se insertará (o actualizará, lo que exhibe el mismo comportamiento extraño) cuando entro en mi código de acceso a datos en el depurador, pero no cuando paso sobre ese mismo código. Seguramente, me he perdido algo obvio ...

int result = 0;
const string sql = "INSERT into MyProgress (ImportJobId, SiteCode, ProcessedAmount, TotalToProcess, ErrorCount, CreatedDateTime, LastModifiedDateTime) " +
                   "VALUES (@importJobId, @siteCode, @currentProgress, @totalPieces, 0, getdate(), getdate())";

using (var connection = GetSqlConnection())
using (var sqlCmd = GetSqlCommand(connection, sql))
{
    sqlCmd.Parameters.AddWithValue("@importJobId", importJobId);
    sqlCmd.Parameters.AddWithValue("@siteCode", siteCode);
    sqlCmd.Parameters.AddWithValue("@currentProgress", currentProgress);
    sqlCmd.Parameters.AddWithValue("@totalPieces", totalPieces);

    //SqlParameter outputParameter = new SqlParameter("@ID", SqlDbType.Int, 4);
    //outputParameter.Direction = ParameterDirection.InputOutput;
    //sqlCmd.Parameters.Add(outputParameter);

    sqlCmd.BeginExecuteNonQuery();
    //result = (int) (outputParameter.Value ?? -1);
}

return result;

Para los curiososGetSqlConnection() Se ve como esto:

SqlConnection connection = new SqlConnection(_ConnectionString);
connection.Open();
return connection;

Respuestas a la pregunta(2)

Su respuesta a la pregunta