ualquer desvantagem de usar ExecuteReaderAsync de C # AsyncCTP

Existem alguns artigos que indicam que as chamadas de banco de dados assíncronas são uma má ideia no .NE

As minhas chamadas ao banco de dados devem ser assíncronas?As minhas chamadas ao banco de dados devem ser assíncronas, parte II

o CTP assíncrono C #, existe umSystem.Data.SqlClient.SqlCommand extensão chamadaExecuteReaderAsync. Eu tenho algumas operações como abaixo no meu código existente:

var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["hubConnectionString"].ConnectionString;

using (var conn = new SqlConnection(connectionString)) {
    using (var cmd = new SqlCommand()) {

        cmd.Connection = conn;
        cmd.CommandText = "sp$DetailsTagsGetAllFromApprovedPropsWithCount";
        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        conn.Open();

        var reader = cmd.ExecuteReader();
        while (reader.Read()) {

            //do the reading

        }

        conn.Close();
    }
}

Existem várias operações como esta no meu código. Então, estou pensando em convertê-los em assíncrono

Mas, por outro lado, não estou vendo muita atração por essa abordagem por aí (talvez não esteja olhando na direção certa, quem sabe!).

ntão, há alguma desvantagem em usar esse novo modelo de programação assíncrona aqu

Editar

Supondo que refatorar o código conforme abaixo:

public async Task<IEnumerable<Foo>> GetDataAsync() { 

    List<Foo> foos = new List<Foo>();

    var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["hubConnectionString"].ConnectionString;

    using (var conn = new SqlConnection(connectionString)) {
        using (var cmd = new SqlCommand()) {

            cmd.Connection = conn;
            cmd.CommandText = "sp$DetailsTagsGetAllFromApprovedPropsWithCount";
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            conn.Open();

            var reader = await cmd.ExecuteReaderAsync();
            while (reader.Read()) {

                //do the reading
                //create foos

            }

            conn.Close();
        }
    }

    return foos;

}

Tanto quanto eu entendo da palavra-chave wait, ele converte o código, que é depois dele, como continuação. Além disso, quando ele pressiona a palavra-chave wait, ele retorna imediatamente para o chamador, independentemente do status da operação. Quando termina, volta e dispara o código de continuação.

Isto é o que eu tenho em mente.

questionAnswers(4)

yourAnswerToTheQuestion