Fehler: Das Objekt kann nicht gelöscht werden, da es nicht im ObjectStateManager gefunden wurde

c# entity-framework linq-to-entities

Frage

Ich habe versucht, das Entity Framework in den Griff zu bekommen, und ich treffe Geschwindigkeitsschwellen ... Ich habe eine Get () - Methode, die gut funktioniert und getestet wurde, aber meine Delete-Methode funktioniert nicht:

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

Ich erhalte jedoch die folgende Fehlermeldung: Fehler: Das Objekt kann nicht gelöscht werden, da es nicht im ObjectStateManager gefunden wurde.

Ich habe den Debugger ausgeführt und das Objekt im DeleteObject ist korrekt ... Was fehlt mir? Vielen Dank.

Akzeptierte Antwort

Jedes EF-Objekt ist eng mit dem Manager verbunden (aus Gründen eines besseren Wortes), der es erstellt hat. oder mit dem es verbunden wurde. Da Sie db an Ihre Get Methode übergeben, J1Entities ich davon aus, dass Get entweder seine eigenen J1Entities hat oder dass das Objekt eigenständig erstellt wurde (möglicherweise deserialisiert).

Um es zu löschen, muss es zuerst darüber Bescheid wissen. Dies kann bedeuten, dass ein Objekt an den Manager angehängt wird. In diesem Fall scheint es jedoch eine einfachere Option zu sein, db nur an Get , sodass das Get im selben Kontext erfolgt (da db automatisch die von ihm erstellten Objekte anfügt selbst).



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum