C# 从数据库中删除条目
我最近注意到有两种不同的方法可以在实体框架中从DB中删除条目 我最初使用以下方法实现它C# 从数据库中删除条目,c#,asp.net,asp.net-mvc,asp.net-mvc-3,entity-framework,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,我最近注意到有两种不同的方法可以在实体框架中从DB中删除条目 我最初使用以下方法实现它 db.Courses.Remove(course); db.Entry(course).State = EntityState.Deleted; 但后来我发现你也可以做以下事情 db.Courses.Remove(course); db.Entry(course).State = EntityState.Deleted; 这两者有什么区别吗? 我认为切换到后者的唯一原因是在我的实现中更加一致,因为这是
db.Courses.Remove(course);
db.Entry(course).State = EntityState.Deleted;
但后来我发现你也可以做以下事情
db.Courses.Remove(course);
db.Entry(course).State = EntityState.Deleted;
这两者有什么区别吗?
我认为切换到后者的唯一原因是在我的实现中更加一致,因为这是我用来编辑条目的方法
有什么想法吗?它们做的事情大致相同 后者仅将记录状态设置为“已删除”,前者设置为“已分离”。您仍然需要调用以保存更改以反映记录删除
using (var context = new SchoolEntities ())
{
var dpt = new Department { Name = "Mathematics", DepartmentID = 1};
context.Entry(dpt).State = EntityState.Added;
context.SaveChanges();
}
显示的代码与其他答案来自相同的资源它们做的事情大致相同 后者仅将记录状态设置为“已删除”,前者设置为“已分离”。您仍然需要调用以保存更改以反映记录删除
using (var context = new SchoolEntities ())
{
var dpt = new Department { Name = "Mathematics", DepartmentID = 1};
context.Entry(dpt).State = EntityState.Added;
context.SaveChanges();
}
显示的代码来自与其他答案相同的资源这两种方法都将实体标记为已删除,因此下一个db.SaveChanges();从数据库和上下文中删除它们 本文介绍了添加、修改和删除实体的所有方法
这两种方法都将实体标记为已删除,因此下一个db.SaveChanges();从数据库和上下文中删除它们 本文介绍了添加、修改和删除实体的所有方法
是的,它们之间有一些区别 如果在模型上设置级联选项,以便在客户标记为已删除时,在上下文中加载的订单也标记为删除 比如说
var customer=db.Customers.Include(c=>c.Orders)。首先(c=>c.CustomerId==1);
db.Customers.Remove(customer);//此时,上下文中的所有订单也被标记为已删除。
但是当你这样做的时候
db.Entry(customer.State=EntityState.Deleted代码>
未将订单标记为已删除。是的,它们之间存在差异
如果在模型上设置级联选项,以便在客户标记为已删除时,在上下文中加载的订单也标记为删除
比如说
var customer=db.Customers.Include(c=>c.Orders)。首先(c=>c.CustomerId==1);
db.Customers.Remove(customer);//此时,上下文中的所有订单也被标记为已删除。
但是当你这样做的时候
db.Entry(customer.State=EntityState.Deleted代码>
未将订单标记为已删除。在这两种情况下,您都需要调用SaveChanges(),并且在这两种情况下,它们都标记为已删除(并实际删除)。在这两种情况下,您都需要调用SaveChanges(),并且在这两种情况下,它们都标记为已删除(并实际删除)。删除()方法只是我猜想的状态的一个方便的助手。Remove()方法只是我猜想的状态的一个方便的助手。