我正在使用Entity Framework。 我试图从linq获得结果,然后对它们进行删除:
IEnumerable<tblAVAL> tblval = db.tblVALs.Where(p => p.PgrID == prid);
db.DeleteObject(tblval);
db.SaveChanges();
请注意tblval
会返回一个集合。我收到以下消息:
无法删除该对象,因为在该对象中找不到该对象 ObjectStateManager。
如果我执行以下操作,则可以:
tblAVAL tblval = db.tblVALs.First(p => p.PgrID == prid);
db.DeleteObject(tblval);
db.SaveChanges();
如何使用返回超过1行的集合来删除它?
答案 0 :(得分:1)
将集合传递给DeleteObject方法时,它会尝试映射Collection对象,因为它是一个实体。您需要做的是迭代集合并删除项目。
foreach( var tblav in db.tblVALs.Where(p => p.PgrID == prid))
db.DeleteObject(tblav);
db.SaveChanges();
EntityFramwork不支持批量删除,更新和插入。 http://magiq.codeplex.com具有Linq-to-Sql和EntityFramework的实现,但没有所有功能。也许所做的事情符合您的需求。