【发布时间】:2016-02-15 22:32:04
【问题描述】:
简单明了, 有什么区别
DbSet().Remove(x)
到
context.Entry(x).State = State.Deleted?
谢谢
【问题讨论】:
-
看this。
标签: c# ef-code-first entity-framework-6
简单明了, 有什么区别
DbSet().Remove(x)
到
context.Entry(x).State = State.Deleted?
谢谢
【问题讨论】:
标签: c# ef-code-first entity-framework-6
我不能说,删除的 MSDN 文章说
将给定实体标记为已删除,以便在调用 SaveChanges 时将其从数据库中删除。请注意,在调用此方法之前,实体必须以其他状态存在于上下文中。
.Remove 可能只是删除项目的首选方式。
编辑:
此外,EntityState 的 MSDN 文章说这是删除。
实体正在被上下文跟踪并存在于数据库中,但已被标记为在下次调用 SaveChanges 时从数据库中删除。
这进一步巩固了它们实际上是同一件事。
【讨论】:
EntityState.Added 的实体上设置EntityState.Deleted,那么当您尝试保存更改时,它会出现异常,因为它尝试删除的记录已经不存在。但是Remove 会将其更改为Detached。听起来Remove 也尝试处理包含实体上的外键? forums.asp.net/t/…