【发布时间】:2017-07-15 09:46:18
【问题描述】:
我刚刚开始着手在 ASP.NET 中创建一个新的 WebAPI2 项目。我试图让控制器从我创建的 DTO 返回数据,而不是 EF 创建的原始对象类。我一直在关注a tutorial on Microsoft Docs,并获得了返回所有记录以使用 DTO 工作的方法,但我无法弄清楚如何正确修改仅返回 ID 与传递的参数匹配的记录的方法异步任务,就像默认方法一样。
Visual Studio 生成的默认方法如下所示:
[ResponseType(typeof(Post))]
public async Task<IHttpActionResult> GetPost(int id)
{
Post post = await db.Post.FindAsync(id);
if (post == null)
{
return NotFound();
}
return Ok(post);
}
我的修改后的方法如下所示:
[ResponseType(typeof(PostDTO))]
public async Task<IHttpActionResult> GetPost(int id)
{
var _post = from p in db.Post
where p.PostID == id
select new PostDTO()
{
PostID = p.PostID,
SubmitTime = p.SubmitTime,
SubmitUsername = p.SubmitUsername,
};
if (_post == null)
{
return NotFound();
}
return Ok(_post);
}
这种方法工作得很好,但正如您所见,它没有利用 .NET 的 Await/Async 功能来异步执行查询。老实说,我承认我实际上并不知道这是否重要,但我觉得如果默认方法是异步的,我的也应该如此。我只是不知道在哪里插入 Async 和 Await 关键字来完成这项工作。
【问题讨论】:
标签: asp.net asp.net-web-api async-await asp.net-web-api2