我们使用带有 DbContext 和 DbSet<> 的代码优先 EF 4 以及带有 DataAnnotations 的 POCO。 我对此很陌生,似乎无法找到我的问题的答案:
如何直接从数据库中删除多个项目,而无需先使用 LINQ 选择项目,然后在每次迭代时执行循环并调用 Remove(item)
?这对我来说似乎很愚蠢。
与此相关的所有引用都引用了似乎不存在的函数,例如我的 DbContext 中不存在的 DeleteOnSubmit(item)
。此外,它仅删除一项。
有更好的方法吗?
最佳答案
DeleteOnSubmit
是来自 DataContext
类 = Linq-to-SQL
在删除项目之前不必加载它。如果你知道它的 key 就足够了。像这样的东西应该有效:
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 ...");
关于.net - 如何使用 Code-First EF 4.1 从数据库中删除多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7040364/