Async await 使用带有Dapper的异步等待关键字

Async await 使用带有Dapper的异步等待关键字,async-await,.net-4.5,dapper,Async Await,.net 4.5,Dapper,我想使用micro orm,并决定使用Dapper 但似乎找不到任何关于它支持新的异步/等待语法的提及。异步查询对我来说很重要 有人能提供一个使用Dapper使用wait关键字进行异步查询的代码示例吗?Dapper在瞄准.NET 4.5时,通过以*async-QueryAsync等结尾的方法完全支持TPL的使用。具体地说,.NET 4.5构建包括一个示例Yaron public async Task<List<Artist>> GetAllAsync() {

我想使用micro orm,并决定使用Dapper

但似乎找不到任何关于它支持新的异步/等待语法的提及。异步查询对我来说很重要


有人能提供一个使用Dapper使用wait关键字进行异步查询的代码示例吗?

Dapper在瞄准.NET 4.5时,通过以*async-QueryAsync等结尾的方法完全支持TPL的使用。具体地说,.NET 4.5构建包括一个示例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;
            }
        }
    }
公共异步任务GetAllAsync() { 使用( SqlConnection连接= 新SqlConnection(Conn.String)) { 等待连接OpenAsync(); 使用(var multi=await conn.QueryMultipleAsync(StoredProcs.Artists.GetAll,commandType:commandType.StoredProcedure)) { var Artists=multi.Read((艺术家、专辑艺术家)=> { artist.albumArtist=albumArtist; 回归艺术家; }).ToList(); var albums=multi.Read( (专辑、专辑艺术家、专辑)=> { album.albumArtist=唱片集; 归还相册; }).ToList(); 康涅狄格州关闭(); 回归艺术家; } } }
以下是一些示例

然而,这是不可期待的:

var results = await Connection.QueryAsync<T>(sql).Result.ToArray();
var results=await Connection.querySync(sql.Result.ToArray();
你必须这样写:

var results = await Connection.QueryAsync<T>(sql);
return results.ToArray();
var results=wait Connection.querySync(sql);
返回结果。ToArray();

Great的可能副本,这是我一直在寻找的。您有哪里可以找到使用这些方法的代码示例吗?@Yaron它们基本上与非异步相同-只需在开始处添加
wait
,在结束处添加
async
。。。除非您需要取消令牌,否则在这种情况下,您需要使用不同的API,直到下一次构建时,是否需要wait conn.OopenAsync()?我以为它自动打开了连接