[英]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.