如何在EF的某些条件下执行删除行?

时间:2013-03-03 11:48:47

标签: c# sql entity-framework tsql

在ADO.NET中我可以使用delete语句

从SQL表中删除一些行。

实体框架中的等价物是什么?

我怎样才能达到同样的效果?

使用null对象进行更新是不一样的。

3 个答案:

答案 0 :(得分:1)

您需要先检索要删除的对象。 例如:

 // Assuming ID is primary key in `Customer` entity
 Customer cust = (from c in context.Customers where c.ID = "1" select c);

然后使用DataContext.entity.DeleteObject

删除对象
 context.Customers.DeleteObject(cust);
 context.SaveChanges();

更多:DataContext

答案 1 :(得分:1)

回复告诉你,你需要首先获取对象(严格来说,键是足够的,但你需要手动完成一些工作)到内存中并标记它们以便删除,最后调用SaveChanges。虽然这是“正常”的方法,但有许多扩展,帮助,......允许你做批量删除,批量更新和其他有用的东西。

您可以查看EntityFramework.Extended(也在GitHub)或Entity Framework Extensions(来源)。

答案 2 :(得分:0)

首先,您需要从数据库实体创建实例,之后您应该选择所需的对象,然后将其删除:

TestEntities db = new TestEntities();
Test ts = (from rows in db.Tests
           where rows.ID == 1
           select rows).FirstOrDefault();
if (ts != null)
{
     db.Tests.DeleteObject(ts);
     db.SaveChanges();
}

更新:

如果您的结果集是一个列表,我的意思是您可以使用此解决方案的多个记录:

List<Test> lst = (from rows in db.Tests select rows).ToList();
foreach (Test item in lst)
{ 
     db.Tests.DeleteObject(item);
}
db.SaveChanges();