Reputation: 34717
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.
Upvotes: 11
Views: 16136
Reputation: 1064114
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).
Upvotes: 17