Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库中删除条目_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Entity Framework - Fatal编程技术网

C# 从数据库中删除条目

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中删除条目

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

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()方法只是我猜想的状态的一个方便的助手。