2010-10-11 42 views
1

给定一组实体ID,如何在不首先选择实体的情况下有效地删除ID代表的实体?实体框架中的高效多重删除4

下面是一些代码,我现在使用,但EF探查在我抱怨运行N + 1个查询:

var ids = GetSelectedIds(); 

    foreach (var id in ids) 
     db.Workshops.DeleteObject(db.Workshops.Single(x => x.Id == id)); 

    db.SaveChanges(); 
    BindWorkshops(); 

回答

1

这有助于EF分析器停止抱怨N + 1,但有更好的方法?

var ids = GetSelectedIds(); 

foreach (var id in ids) 
{ 
    var ws = new Workshop { Id = id }; 
    db.Workshops.Attach(ws); 
    db.Workshops.DeleteObject(ws); 
} 

db.SaveChanges(); 
BindWorkshops(); 
+0

这是没有下降到原生SQL的最有效方法。 – 2010-10-11 20:24:34