6

可能重複:
Bulk-deleting in LINQ to Entities有什麼樣DbSet <T> .RemoveWhere(謂語<T>)

我需要通過條件刪除一些實體。例如,除去具有數量少的所有訂單項比1:

var orderId = 10; // any order Id 
context.OrderItems.RemoveWhere(item => item.OrderId == orderId && item.Quantity < 1.0); 

我知道,我可以選擇的項目,然後刪除它們一個接一個這樣的:

var itemsToRemove = context.OrderItems.Where(item => item.OrderId == orderId && item.Quantity < 1.0).ToArray(); 

foreach (var item in itemsToRemove) 
    context.OrderItems.Remove(item); 

但是,這是非常不可能,因爲額外的工作將會發生。 我錯過了什麼嗎?

回答

3

您可以在支持Batch Update and Delete的GitHub上使用EntityFramework.Extended插件。

+0

此解決方案有一些限制,但它比沒有更好。謝謝,我會嘗試。 – Dennis 2012-07-25 11:50:08

+0

@丹尼斯它是開源的,所以你可以隨時調整它以適應你的需求。 – James 2012-07-25 12:00:33

+0

@詹姆斯的侷限性更具理論性/實踐性。 ORM沒有通用的方式來正確支持批量更新和刪除。在學術計算機科學中,它仍然是一個開放的研究問題,傾向於實際的軟件工程 - 參見威拉德庫克的「批處理」論文。 – 2015-06-15 13:44:14