猿问

如何在Entity Framework中删除多行(没有foreach)

如何在Entity Framework中删除多行(没有foreach)

我正在使用Entity Framework从表中删除多个项目。没有外键/父对象,因此我无法使用OnDeleteCascade处理此问题。

现在我这样做:

var widgets = context.Widgets
    .Where(w => w.WidgetId == widgetId);foreach (Widget widget in widgets){
    context.Widgets.DeleteObject(widget);}context.SaveChanges();

它有效但是foreach让我烦恼。我正在使用EF4,但我不想执行SQL。我只是想确保我没有遗漏任何东西 - 这一切都很好,对吧?我可以用扩展方法或帮助器来抽象它,但在某个地方我们仍然会做一个foreach,对吧?


慕哥6287543
浏览 672回答 3
3回答

绝地无双

如果你不想直接在循环中调用DeleteObject来执行SQL,那么今天你可以做到最好。但是,您可以使用我在此处描述的方法,通过扩展方法执行SQL并使其完全通用。虽然答案是3.5。对于4.0,我可能会使用新的ExecuteStoreCommand API,而不是下载到StoreConnection。
随时随地看视频慕课网APP
我要回答