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?
Questa soluzione ha alcune limitazioni, ma è meglio di niente. Grazie, ci proverò. – Dennis
@Dennis è open source, quindi puoi sempre modificarlo in base alle tue esigenze. – James
@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. –