Asp.net
如何確認非同步 EF6 等待 db.SaveChangesAsync() 是否按預期工作?
我的程式碼如下所示:
public async Task<IHttpActionResult> Delete(int id) { var userId = Int32.Parse(User.Identity.GetUserId()); UserTest userTest = await db.UserTests.FindAsync(id); if (userTest == null) { return NotFound(); } if (userTest.UserId != userId) { return Unauthorized(); } db.UserTests.Remove(userTest); await db.SaveChangesAsync(); return Ok(); }我認為 db.SaveChangesAsync 之前的所有內容都可以,但是在執行 return Ok() 之前如何確認 db.SaveChangesAsync 是否有效?理想情況下,我認為我應該檢查異常和事物,但我不確定如何將其放入此程式碼塊中。
來自 msdn:
public virtual Task<int> SaveChangesAsync()返回值 類型:System.Threading.Tasks.Task 表示非同步保存操作的任務。任務結果包含寫入底層數據庫的對像數量。
檢查結果是否大於 0:
if(await db.SaveChangesAsync() > 0) { ..... }另一種選擇是用
try ... catch塊包裝它:try { await db.SaveChangesAsync(); return Ok(); } catch (Exception ex) { return NotFound(ex.Message); }