.net核心中是否有DBSet.UpdateAsync()和RemoveAsync()?

Mar*_*mic 18 .net asynchronous async-await .net-core

我在任何地方都找不到任何相关信息.

还有ToListAsync(), AddAsync()更多,但找不到任何关于UpdateAsync()或的文档RemoveAsync().

有人对这个有了解吗?

Dav*_*idG 22

ToListAsync存在是因为它实际上导致EF转向数据存储以检索数据.这可能需要一些时间,因此您可以异步调用它.

AddAsync但是,只有在您调用SaveChanges或之后才开始跟踪实体,但实际上不会向数据库发送任何更改SaveChangesAsync.除非你知道自己在做什么,否则你不应该真正使用这种方法.此方法的异步版本存在的原因在文档中进行了解释:

此方法仅异步以允许特殊值生成器(例如,"Microsoft.EntityFrameworkCore.Metadata.SqlServerValueGenerationStrategy.SequenceHiLo"使用的特殊值生成器)异步访问数据库.对于所有其他情况,应使用非异步方法.

Update并且Remove是相同的Add尽可能多的,直到您保存所做的修改,因为它们只影响内部跟踪.

  • @AlexanderDerck 我相信在您使用 [sequences](https://msdn.microsoft.com/en-us/library/ff878058.aspx) 时会使用它,因为您可以在插入表格之前从它们那里获取一个数字。如果不先保存更改,您将无法获得自动递增的密钥。 (2认同)