我只是注意到 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 不会直接在数据库中保存更改,直到您调用 SaveChangesSaveChangesAsync
删除

此功能从数据库中删除行,而无需在上下文中加载实体。

调用此方法可能需要相当长的时间,具体取决于将在数据库中删除的行数。

因此,在这里提供 DeleteAsync 方法是有意义的。

正如@Matt 指定的那样,该库当前使用 Task.Run 而不是真正的异步,最终将被修复。

关于c# - Entity Framework 不提供 DeleteAsync 或 AddAsync。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42422656/

10-11 17:36