2014-09-14 11 views
24

Voglio usare un micro-ormo e ho deciso di utilizzare Dapper.Utilizzo Async Attendere le parole chiave con Dapper

Ma non riesco a trovare alcuna menzione a sostegno della nuova sintassi asincrona/attesa. Le richieste asincrone sono importanti per me.

Qualcuno può fornire un esempio di codice di una query asincrona eseguita con Dapper utilizzando la parola chiave await?

+1

possibile duplicato di [Che .Net orms o MicroOrms supportano le operazioni asincrone e PostgreSql] (http://stackoverflow.com/questions/12343284/what-net-orms-or-microorms-support-async-operations-and-postgresql) – i3arnon

risposta

37

Dapper quando si mira .NET 4.5 ha il pieno supporto per l'utilizzo di TPL, tramite i metodi che termina in * Async - QueryAsync ecc In particolare, l'accumulo di .NET 4.5 include this extra set of methods

+1

Grande, questo è quello che stavo cercando. Hai dove posso trovare alcuni esempi di codice che usano questi metodi? –

+0

@Yaron sono fondamentalmente uguali a quelli non asincroni - basta aggiungere 'await' all'inizio e' Async' alla fine ... A meno che non siano necessari token di annullamento, nel qual caso è necessario utilizzare un'API diversa fino alla successiva costruire –

23

Ecco un esempio Yaron

public async Task<List<Artist>> GetAllAsync() 
    { 
     using (
      SqlConnection conn = 
       new SqlConnection(Conn.String)) 
     { 
      await conn.OpenAsync(); 

      using (var multi = await conn.QueryMultipleAsync(StoredProcs.Artists.GetAll, commandType: CommandType.StoredProcedure)) 
      { 
       var Artists = multi.Read<Artist, AlbumArtist, Artist>((artist, albumArtist) => 
       { 
        artist.albumArtist = albumArtist; 
        return artist; 
       }).ToList(); 

       var albums = multi.Read<Album, AlbumArtist, Album>(
       (album, albumArtist, album) => 
       { 
        album.albumArtist = album; 
        return albums; 
       }).ToList(); 


       conn.Close(); 

       return Artists; 
      } 
     } 
    } 
Problemi correlati