views:

2967

answers:

2

Trying to get a handle on Entity Framework here and I am hitting some speedbumps... I have a Get() method that works fine and has been tested, buut 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.

+5  A: 

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

Marc Gravell
Perfect...I figured it was something simple... :)
naspinski
A: 

How would you do this in code?

Lee Englestone