我想使用一个微观,并决定与Dapper一起去。
但似乎无法找到支持新的async / await语法的任何提及。异步查询对我很重要。
有人可以使用await关键字提供使用Dapper进行异步查询的代码示例吗?
答案 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();