6

thể trùng lặp:
Bulk-deleting in LINQ to EntitiesCó cái gì đó như DbSet <T> .RemoveWhere (Predicate <T>)

tôi cần phải loại bỏ một số tổ chức bởi điều kiện. Ví dụ, loại bỏ tất cả các mục theo thứ tự có số lượng ít hơn 1:

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

tôi biết, tôi có thể chọn những mặt hàng và sau đó loại bỏ chúng một-by-one như thế này:

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

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

Nhưng đây là rất khó, bởi vì công việc phụ sẽ diễn ra. Tôi có bỏ sót điều gì không?

Trả lời

3

Bạn có thể sử dụng plugin EntityFramework.Extended trên GitHub có hỗ trợ cho Batch Update and Delete.

+0

Giải pháp này có một số hạn chế, nhưng tốt hơn là không có gì. Cảm ơn, tôi sẽ thử nó. – Dennis

+0

@Dennis là nguồn mở để bạn luôn có thể tinh chỉnh nó cho phù hợp với yêu cầu của bạn. – James

+0

@james những hạn chế là lý thuyết/thực tế hơn trong tự nhiên. Không có cách nào chung cho một ORM để hỗ trợ Batch Update và Delete đúng cách. Nó vẫn là một vấn đề nghiên cứu mở rộng trong khoa học máy tính học thuật nghiêng về phía kĩ nghệ phần mềm thực tiễn - xem bài báo "xếp chồng" của Willard Cook cho một số mới nhất. –

Các vấn đề liên quan