Entity Framework-Fehler: Ein Objekt mit einem Null-EntityKey-Wert kann nicht an einen Objektkontext angehängt werden

8

In meiner Anwendung habe ich den folgenden Code ...

%Vor%

Dieser Code ruft eine Methode für ein DataManager-Objekt auf, das Entity Framework verwendet ...

%Vor%

Der Einsatz dieses Codes funktioniert einwandfrei. Aber wenn ich versuche, ein Update durchzuführen, erhalte ich einen Fehler, der besagt: "Ein Objekt mit einem Null-EntityKey-Wert kann nicht an einen Objektkontext angehängt werden."

Es tritt in dieser Codezeile auf: entities.Attach (userInfo);

Was ich versuche zu erreichen, ist, einen Rundflug in die Datenbank zu vermeiden, nur um den Datensatz auszuwählen, an dem ich später Änderungen vornehmen und aktualisieren werde, um so zwei Rundreisen zur Datenbank zu machen.

Irgendwelche Ideen, was schief läuft oder wie ich das besser erreichen könnte?

Danke.

    
jdavis 13.12.2011, 22:11
quelle

2 Antworten

20

Scheint so, als ob Sie EF 4.1+ verwenden. Sie müssen EF mitteilen, dass Ihre Entität aktualisiert werden soll (Änderungsstatus):

%Vor%

P.S. Sie müssen Attach nicht explizit aufrufen. Es ist unter der Haube gemacht.

Aktualisieren :
basierend auf Ihren Kommentaren verwenden Sie EF 4.0. Hier ist, was Sie tun müssen, um Ihr Objekt wie in EF 4.0 geändert anzuhängen:

%Vor%

Sie können die Methode Attach nicht verwenden. Von Ссылка :

  

Wenn mehr als eine Entität eines bestimmten Typs denselben Schlüsselwert hat, löst das Entity Framework eine Ausnahme aus. Um zu vermeiden, dass die Ausnahme auftritt, verwenden Sie die Methode AddObject , um die gelöschten Objekte anzuhängen, und ändern Sie dann den Status entsprechend.

    
Kamyar 13.12.2011, 22:54
quelle
3

Von MSDN

  

Das Objekt, das an die Attach-Methode übergeben wird, muss gültig sein   EntityKey-Wert Wenn das Objekt keinen gültigen EntityKey-Wert hat,   Verwenden Sie die AttachTo-Methode, um den Namen des Entitätssatzes anzugeben.

Hoffe, das wird dir helfen.

    
Shymep 13.12.2011 22:40
quelle