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);
但是,这是非常不可能,因为额外的工作将会发生。 我错过了什么吗?
此解决方案有一些限制,但它比没有更好。谢谢,我会尝试。 – Dennis 2012-07-25 11:50:08
@丹尼斯它是开源的,所以你可以随时调整它以适应你的需求。 – James 2012-07-25 12:00:33
@詹姆斯的局限性更具理论性/实践性。 ORM没有通用的方式来正确支持批量更新和删除。在学术计算机科学中,它仍然是一个开放的研究问题,倾向于实际的软件工程 - 参见威拉德库克的“批处理”论文。 – 2015-06-15 13:44:14