使用Async Await关键字与Dapper

时间:2014-09-14 12:51:33

标签: async-await .net-4.5 dapper

我想使用一个微观,并决定与Dapper一起去。

但似乎无法找到支持新的async / await语法的任何提及。异步查询对我很重要。

有人可以使用await关键字提供使用Dapper进行异步查询的代码示例吗?

3 个答案:

答案 0 :(得分:44)

Dapper在针对.NET 4.5时完全支持TPL使用,通过以* Async - QueryAsync等结尾的方法。具体来说,.NET 4.5版本包括this extra set of methods

答案 1 :(得分:33)

以下是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;
            }
        }
    }

答案 2 :(得分:0)

这里有一些例子。

Examples for Dapper - Async calls

但是,这是无法等待的:

var results = await Connection.QueryAsync<T>(sql).Result.ToArray();

您必须编写如下内容:

var results = await Connection.QueryAsync<T>(sql);
return results.ToArray();