Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: The object cannot be deleted because it was not found in the ObjectStateManager

Trying to get a handle on Entity Framework here and I am hitting some speed bumps... I have a Get() method that works fine and has been tested, but my Delete method is not working:

   public static void Delete(string name)
    {
        J1Entities db = new J1Entities();
        db.DeleteObject(Get(name));
        db.SaveChanges();
    }

But I get the following error: Error: The object cannot be deleted because it was not found in the ObjectStateManager.

I ran the debugger, and the object inside the DeleteObject is correct... what am I missing? Thank you.

like image 434
naspinski Avatar asked Jan 16 '09 07:01

naspinski


1 Answers

Each EF object is tightly associated to the manager (for want of a better word) that created it. or to which it has been associated. Since you don't pass db to your Get method, I assume that Get has either used it's own J1Entities, or the object has been created standalone (perhaps deserialized).

In order to delete it, it must know about it first. That might mean by attaching an object to the manager - but in this case, it seems like an easier option is just to pass db into Get, so that the Get is done in the same context (since db will automatically attach objects that it creates itself).

like image 65
Marc Gravell Avatar answered Nov 08 '22 23:11

Marc Gravell