繁体   English   中英

如何使用 Code-First EF 4.1 从数据库中删除多个项目

[英]How to DELETE multiple items from database with Code-First EF 4.1

我们使用带有 DbContext 和 DbSet<> 的代码优先 EF 4 以及带有 DataAnnotations 的 POCO。 我对此并不陌生,似乎无法找到我的问题的答案:

如何直接从数据库中删除多个项目,而无需先使用 LINQ 选择项目,然后在每次迭代时执行循环并调用Remove(item) 这对我来说似乎很愚蠢。

与此有关的所有参考资料均指 function 似乎不存在,例如我的 DbContext 中不存在的DeleteOnSubmit(item) 此外,它只删除一项。

有没有更好的办法?

DeleteOnSubmit是来自DataContext class = Linq-to-SQL 的 function

在删除项目之前,您不必加载项目。 如果你知道它的关键就足够了。 像这样的东西应该工作:

var item = new Item { Id = someId };
context.Items.Attach(item);
context.Items.Remove(item);
context.SaveChanges();

或者

var item = new Item { Id = someId };
context.Items.Attach(item);
context.Entry(item).State = EntityState.Deleted;
context.SaveChanges();

如果不指定要删除的每个单个项目,则无法使用 EF 删除多个项目(级联删除除外)。 如果要直接删除多个项目,则必须使用 SQL 之类的

context.Database.ExecuteSqlCommand("DELETE ...");

实体框架不支持一次多次删除,因为它需要 memory 中的 object。 您需要遍历循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM