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


Question

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.

1
11
6/25/2011 4:22:25 AM

Accepted Answer

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).

16
1/16/2009 7:25:16 AM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon