我只是注意到 EF(此处使用版本 5)不提供 DeleteAsync()
/AddAsync()
。我还注意到像这样的项目:
https://github.com/zzzprojects/EntityFramework-Plus
确实提供 DeleteAsync()
作为事后的想法。为什么 EF 不提供开箱即用的 DeleteAsync()
?只是好奇。
附录:正如 EF-Plus 的维护者所指出的,我提到的“DeleteAsync”风格与 EF 的“Delete”/“DeleteAsync”有些不同,因为前者对查询目标元素进行操作, 将与 匹配在 db/db-server 上,而 EF 的 Delete 操作在调用 'Delete()' 之前已经检索到 的元素。尽管这些方法的签名存在差异,但我的问题引起的最初关注仍然是其优点。
最佳答案
免责声明 :我是 Entity Framework Plus 的所有者
Entity Framework 中的 Add
&& Remove
和我的库中的 Delete
之间存在巨大差异。
添加/删除
Add 方法只会将实体添加到 ChangeTracker,而 Remove 方法只会将 ChangeTracker 中的 EntityState 更改为“Deleted”。
正如@Ivan 指定的那样,Remove
不会直接在数据库中保存更改,直到您调用 SaveChanges
或 SaveChangesAsync
删除
此功能从数据库中删除行,而无需在上下文中加载实体。
调用此方法可能需要相当长的时间,具体取决于将在数据库中删除的行数。
因此,在这里提供 DeleteAsync
方法是有意义的。
正如@Matt 指定的那样,该库当前使用 Task.Run
而不是真正的异步,最终将被修复。
关于c# - Entity Framework 不提供 DeleteAsync 或 AddAsync。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42422656/