6

Eventuali duplicati:
Bulk-deleting in LINQ to Entitiesc'è qualcosa come DbSet <T> .RemoveWhere (Predicate <T>)

Ho bisogno di rimuovere alcune entità per condizione. Ad esempio, rimuovere tutti gli articoli di ordine con la quantità inferiore a 1:

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

lo so, che posso selezionare gli elementi e poi rimuoverli uno ad uno come questo:

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

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

Ma questo è molto improbabile, perché il lavoro extra avrà luogo. Mi sono perso qualcosa?

risposta

3

È possibile utilizzare il plug-in EntityFramework.Extended su GitHub con supporto per Batch Update and Delete.

+0

Questa soluzione ha alcune limitazioni, ma è meglio di niente. Grazie, ci proverò. – Dennis

+0

@Dennis è open source, quindi puoi sempre modificarlo in base alle tue esigenze. – James

+0

@james le limitazioni sono di natura più teorica/pratica. Non esiste un modo generico per un ORM per supportare correttamente l'aggiornamento e l'eliminazione di batch. È ancora in gran parte un problema di ricerca aperto nell'informatica accademica inclinato verso la pratica dell'ingegneria del software - vedi la carta "batching" di Willard Cook per alcuni degli ultimi. –

Problemi correlati