2017-02-03 163 views

回答

3

ToListAsync存在,因爲它實際上使EF頭關到數據存儲檢索數據。這可能需要一段時間,因此您可以異步調用它。

AddAsync但是,只開始跟蹤實體,但實際上不會發送任何更改到數據庫,直到您撥打SaveChangesSaveChangesAsync。除非你知道你在做什麼,否則你不應該使用這種方法。該方法的異步版本存在在docs解釋的原因:

此方法是異步只允許特殊值發生器,例如由「Microsoft.EntityFrameworkCore.Metadata.SqlServerValueGenerationStrategy.SequenceHiLo」所使用的一個,異步訪問數據庫。對於所有其他情況,應使用非異步方法。

UpdateRemove是一樣的Add的多,因爲他們只有等到您保存您所做的更改會影響內部跟蹤。

+0

因此'AddAsync'可以從服務器獲取一個自動生成的值(自動增量鍵等),而不調用'SaveChanges'例如? –

+1

@AlexanderDerck我相信這是在你使用[sequences](https://msdn.microsoft.com/en-us/library/ff878058.aspx)時使用的,因爲你可以在插入表之前從它們獲得一個數字。如果不先保存更改,您將無法獲得自動遞增的密鑰。 – DavidG