2010-10-11 49 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