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.
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With