602 Stimmen

EntitySet kann nicht aktualisiert werden, da es eine DefiningQuery hat und kein <UpdateFunction>-Element vorhanden ist

Ich verwende Entity Framework 1 mit .net 3.5.

Ich mache etwas Einfaches wie das hier:

var roomDetails = context.Rooms.ToList();

foreach (var room in roomDetails)
{        
   room.LastUpdated = DateTime.Now;
}

Ich erhalte diese Fehlermeldung, wenn ich versuche, dies zu tun:

 context.SaveChanges();

Ich erhalte die Fehlermeldung:

Das EntitySet kann nicht aktualisiert werden, weil es eine DefiningQuery hat und kein <UpdateFunction>-Element im <ModificationFunctionMapping>-Element vorhanden ist, um den aktuellen Vorgang zu unterstützen.

Ich führe viele Aktualisierungen im Kontext durch und habe keine Probleme, nur wenn ich versuche, diese bestimmte Entität zu aktualisieren.

Alle meine Suche zeigt die gleiche Sache, dass es keine Primärschlüssel auf die Entität, die ich versuche, zu aktualisieren deklariert ist. Aber ach, ich habe einen Primärschlüssel deklariert...

20voto

mob1lejunkie Punkte 935

Dies kann auch passieren, wenn das Datenmodell veraltet ist.

Hoffentlich erspart dies jemand anderem Frustration :)

9voto

Ruben.sar Punkte 356

Der Fehler kann aufgetreten sein, wenn Ihre Tabelle keinen Primärschlüssel hat, in diesem Fall ist die Tabelle "read only", und die db.SaveChanges () Befehl wird immer fehlschlagen.

8voto

Kerry Randolph Punkte 580

Ich habe dieselbe Fehlermeldung erhalten, aber in meinem Szenario habe ich versucht, Entitäten zu aktualisieren, die von einer Many-to-Many-Beziehung mit einer PJT (Pure Join Table) abgeleitet sind.

Nach dem Lesen der anderen Beiträge dachte ich, ich könnte das Problem beheben, indem ich ein zusätzliches PK-Feld in die Join-Tabelle einfüge... Wenn Sie jedoch eine PK-Spalte zu einer Join-Tabelle hinzufügen, handelt es sich nicht mehr um eine PJT, und Sie verlieren alle Vorteile des Entity-Frameworks wie die automatische Beziehungszuordnung zwischen den Entitäten.

Die Lösung in meinem Fall bestand also darin, die Join-Tabelle in der DB zu ändern, um eine PK zu erstellen, die BEIDE Fremd-ID-Spalten enthält.

5voto

Ali Raza Punkte 79

Setzen Sie den Primärschlüssel, speichern Sie die Tabelle und aktualisieren Sie sie, gehen Sie zu Model.edmx, löschen Sie die Tabelle und holen Sie sie erneut.

4voto

Yogesh Dangre Punkte 151

enter image description here

In meinem Fall habe ich vergessen, den Primärschlüssel für die Tabelle zu definieren. Weisen Sie also wie im Bild gezeigt zu und aktualisieren Sie Ihre Tabelle über "Update model from Database" aus der .edmx Datei. Ich hoffe es hilft!!!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X