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...

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!!!

3voto

Namal Punkte 31

Ich hatte das gleiche Problem. Wie dieser Thread sagte, hatte meine Tabelle keine PK, also habe ich die PK gesetzt und den Code ausgeführt. Aber leider kam der Fehler wieder. Was ich als nächstes tat, war, die DB-Verbindung zu löschen (löschen Sie die .edmx-Datei im Ordner "Model" im Solution Explorer) und sie neu zu erstellen. Danach war der Fehler weg. Vielen Dank an alle, die ihre Erfahrungen geteilt haben. Das spart eine Menge Zeit.

3voto

JessS Punkte 73

Dies ist keine neue Antwort, aber sie wird jemandem helfen, der sich nicht sicher ist, wie er den Primärschlüssel für seine Tabelle festlegen kann. Verwenden Sie dies in einer neuen Abfrage und führen Sie sie aus. Dadurch wird die Spalte UniqueID als Primärschlüssel festgelegt.

USE [YourDatabaseName]
GO

Alter table  [dbo].[YourTableNname]
Add Constraint PK_YourTableName_UniqueID Primary Key Clustered (UniqueID);
GO

1voto

Abhishek Poojary Punkte 675

Das Hinzufügen des Primärschlüssels hat auch bei mir funktioniert!

Sobald dies geschehen ist, können Sie das Datenmodell aktualisieren, ohne es zu löschen -

Klicken Sie mit der rechten Maustaste auf die edmx-Entity-Designer-Seite und wählen Sie "Modell aus Datenbank aktualisieren".

1voto

Sulyman Punkte 390

Fügen Sie einfach einen Primärschlüssel zu Ihrer Tabelle hinzu und erstellen Sie dann Ihre EF

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