0
我只是在ASP.NET中創建一個新的WebAPI2項目。我試圖讓控制器從我創建的DTO返回數據,而不是EF創建的原始對象類。我一直在遵循a tutorial on Microsoft Docs,並得到了我的方法,它返回的所有記錄使用DTO工作,但我無法弄清楚如何正確修改方法,它只返回ID與使用異步任務傳遞參數匹配的記錄,就像默認的方法一樣。如何使用LINQ和DTO等待
由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的等待/異步功能異步執行查詢。我會誠實地承認,我實際上並不知道這是否重要,但我覺得如果默認方法是異步的,那麼我應該如此。我只是無法確定在哪裏插入Async
和Await
關鍵字來完成此項工作。