マイクロオームを使用したいので、Dapperを使用することにしました。
しかし、新しいasync/await構文をサポートしているという言及は見当たらないようです。非同期クエリは私にとって重要です。
誰かがawaitキーワードを使用してDapperで作成された非同期クエリのコード例を提供できますか?
.NET 4.5を対象とするDapperは、* Async-QueryAsyncなどで終わるメソッドを介してTPLの使用を完全にサポートしています。具体的には、.NET 4.5ビルドには この追加のメソッドセット
これがヤロンのサンプルです
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;
}
}
}
下記は用例です。
ただし、これは待ちきれません:
var results = await Connection.QueryAsync<T>(sql).Result.ToArray();
次のようなものを書く必要があります。
var results = await Connection.QueryAsync<T>(sql);
return results.ToArray();