DataExceptions
Dapper が正しく機能しないという奇妙な問題があります。
これが私のセットアップです:
public class CustomerController : Controller
{
private readonly IMediator _mediator;
public CustomerController(IMediator mediator)
{
_mediator = mediator;
}
[HttpGet]
public async Task<IActionResult> Get(Get.Query query)
{
var result = await _mediator.Send(query);
return Ok(result);
}
}
public class Get
{
public class Query : IRequest<IEnumerable<Result>>
{
}
public class Result
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class QueryHandler : IAsyncRequestHandler<Query, IEnumerable<Result>>
{
private readonly IDbConnection _dapper;
public QueryHandler(IDbConnection dapper)
{
_dapper = dapper;
}
public async Task<IEnumerable<Result>> Handle(Query message)
{
// the below throws because of incorrect type mapping
// (yes, the connection is open)
var customers =
await _dapper.Connection.QueryAsync<Result>("SELECT Id, Name FROM [Customer].[Customers]");
return customers;
}
}
}
結果
Curl
curl -X GET ' http://localhost:5000/api/Customer '
リクエスト URL
http://localhost/api/Customer
レスポンス ボディ
内容なし
レスポンス コード
500
期待される
私は 500 を予期していましたが、エラーの説明があり、コンテンツはありませんでした。
これはスローされる例外です:
メソッドを次のように変更した場合Handle
:
public async Task<IEnumerable<Result>> Handle(Query message)
{
throw new DataException("What is going on?");
}
期待どおりの結果が得られます。「何が起こっているのですか?」というエラーが表示された 500
app.UseDeveloperExceptionPage();
有効にしたのでこんな感じ。
An unhandled exception occurred while processing the request. DataException: What is going on? ...Customer.Get+QueryHandler+<Handle>d__2.MoveNext() in Get.cs, line 42 Stack Query Cookies Headers DataException: What is going on? ...
しかし、それは予想されます。
それで、何が起こっているのですか?DataException
from Dapper が期待どおりに機能しないのはなぜですか?