LINQ实体框架 - 无法删除该对象,因为在ObjectStateManager中找不到该对象

时间:2012-06-13 18:09:51

标签: linq entity-framework

我正在使用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行的集合来删除它?

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的实现,但没有所有功能。也许所做的事情符合您的需求。