ADO.NET实体框架删除行

6

我可能非常盲目和愚蠢,但我找不到ADO.NET实体数据模型生成的任何方法,可以从我的表中删除行。我不想创建自定义查询。那我该怎么办?请帮帮我。

我没有DeleteOnSubmit方法...不知道为什么。这是我想要使用的代码。

var deleteOrderDetails =
from details in db.OrderDetails
where details.OrderID == 11000
select details;

foreach (var detail in deleteOrderDetails)
{
db.OrderDetails.DeleteOnSubmit(detail);
}

db.SubmitChanges();
2个回答

10

需要进行一些修改:

db.DeleteObject(detail);

db.SaveChanges();

亲爱的,

Dan

PS:你之前有使用Linq to SQL,后来又转换到Entity Framework吗?


是的,那就是情况。另外 - 我能用这个一次性删除多行吗? - Trimack
您可以在每个SaveChanges中进行多个对象的删除,是的 :) - Daniel Elliott
不,我的意思是我能做dv.DeleteObject(deleteOrderDetails)吗? - Trimack
1
制作一个对象列表,您可以删除并迭代应用 Contetxt.Model.Remove(item); 完成迭代后,只需应用 Context.SaveChanges 就可以了。 - ncubica

5

这里有另一种方法(感谢这个答案

我假设你有一个名为Orders的表,OrderDetails通过OrderID与其相关。

var order = db.Orders.FirstOrDefault(o=> o.OrderID == 11000);
if(order != null)
{
  order.OrderDetails.Clear();
  db.SaveChanges();
}

这应该会删除与该订单相关的所有订单详情。
编辑:已修复代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接