2017-02-03 65 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