2011-08-12 45 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

實體框架,因爲它在內存中所需的對象不支持多個刪除一次。你需要遍歷循環。

相關問題