从数据库中删除条目

本文关键字:删除 数据库 | 更新日期: 2023-09-27 18:35:22

我最近注意到有两种不同的方法可以从实体框架中的数据库中删除条目。

我最初使用以下方法实现它

db.Courses.Remove(course);

但后来我发现你也可以做到以下几点

db.Entry(course).State = EntityState.Deleted;

两者之间有什么区别吗?我能想到切换到后者的唯一原因是在我的实现中更加一致,因为这是我用来编辑条目的方法。

有什么想法吗?

从数据库中删除条目

这两种方法都将实体标记为已删除,因此下一个数据库。保存更改();将它们从数据库和上下文中删除。

本文介绍添加、修改和删除实体的所有方法。

http://msdn.microsoft.com/en-us/library/gg696174(v=vs.103).aspx

是的,这是它们之间的区别。

如果在模型上设置级联选项,以便在将客户标记为已删除时,在上下文中加载的订单也会标记为删除。

例如

var customer = db.Customers.Include(c => c.Orders).First(c => c.CustomerId == 1); db.Customers.Remove(customer); // at this point all orders in teh context are also marked as deleted.

但是,当您执行此操作时

db.Entry(customer).State = EntityState.Deleted;

未将订单标记为已删除。

它们都做大致相同的事情。

后者仅将记录状态设置为已删除,前者设置为已分离。您仍然需要调用以保存更改以反映记录删除。

using (var context = new SchoolEntities ()) 
{
     var dpt = new Department { Name = "Mathematics", DepartmentID = 1};
     context.Entry(dpt).State = EntityState.Added;
     context.SaveChanges(); 
}

显示的代码来自与其他答案相同的资源