给定一组实体ID,如何在不首先选择实体的情况下有效删除要表示的实体?
以下是一些代码,我现在正在使用,但EF Profiler正在抱怨我运行N + 1个查询:
var ids = GetSelectedIds();
foreach (var id in ids)
db.Workshops.DeleteObject(db.Workshops.Single(x => x.Id == id));
db.SaveChanges();
BindWorkshops();
答案 0 :(得分:1)
这有助于EF Profiler停止抱怨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();