2014-09-14 11 views
24

Chcę użyć mikro-ormu i zdecydowałem się pójść z Dapperem.Używanie Async Oczekuj na słowa kluczowe z Dapperem

Ale nie można znaleźć żadnych wzmianek o nim, wspierających nową składnię asynchroniczną/oczekującą. Zapytania asynchroniczne są dla mnie ważne.

Czy ktoś może podać przykładowy kod asynchronicznej kwerendy tworzonej przy pomocy Dappera przy użyciu oczekiwanego słowa kluczowego?

+1

możliwy duplikat operacji asynchronicznych [What .Net orms lub MicroOrms i PostgreSql] (http://stackoverflow.com/questions/12343284/what-net-orms-or-microorms-support-async-operations-and-postgresql) – i3arnon

Odpowiedz

37

Wytworny podczas kierowania .NET 4.5 posiada pełne wsparcie dla wykorzystania OC, poprzez metody kończąc * ASYNC - QueryAsync itd. W szczególności, .NET 4.5 build zawiera this extra set of methods

+1

Wspaniale, tego właśnie szukałem. Czy masz gdzie znaleźć przykłady kodu, które używają tych metod? –

+0

@Yaron są w zasadzie takie same, jak inne niż asynchroniczne - wystarczy dodać "poczekaj" na początku i "Asynchroniczne" na końcu ... Jeśli nie potrzebujesz żetonów anulowania, w takim przypadku musisz użyć innego interfejsu API do następnego budować –

23

Oto próbka 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; 
      } 
     } 
    }