2011-08-12 114 views
2

我们使用代码优先EF 4的DbContext和DbSet <>和波苏斯与DataAnnotations。 我是新来这个,似乎无法找到一个答案,我quesiton:如何删除从数据库多个项目进行代码优先EF 4.1

我怎么能直接从数据库中删除多个项目,而不首先选择与LINQ的项目,然后做循环,并呼吁每个迭代Remove(item)?这对我来说似乎很愚蠢。

关于这指的是好像不存在一样,DeleteOnSubmit(item)这是不是就在我的DbContext功能的所有引用。此外,它只会删除一个项目。

有没有更好的方法?

回答

4

DeleteOnSubmitDataContext类函数= LINQ到SQL

哟没有删除之前加载项。如果你知道它的关键就足够了。像这样的东西应该工作:

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 ..."); 
0

实体框架,因为它在内存中所需的对象不支持多个删除一次。你需要遍历循环。

相关问题