Dieses Ding macht mich verrückt und der Fehler ist für mich ziemlich bedeutungslos:
Das EntitySet 'TableB' kann nicht aktualisiert werden, da es eine DefiningQuery enthält und kein Element im Element vorhanden ist, das den aktuellen Vorgang unterstützt.
Meine Tische sind so aufgestellt:
Tabelle A. int idA (Identität, Primärschlüssel) ... Tabelle B. int idA (FK für TableA.idA) int val
Tabelle B hat keinen definierten Primärschlüssel im SQL Server. Das Entity Framework hat die Tabelle und die Zuordnung importiert und beide Felder als Schlüssel festgelegt. Aber es wird diesen Fehler ausgeben, wenn ich versuche, eine Einfügung in die Tabelle vorzunehmen!
Was ist los mit dir??
Bearbeiten: Wie von Alex vorgeschlagen, war die Lösung folgende:
- Klicken Sie mit der rechten Maustaste auf die edmx-Datei und wählen Sie Öffnen mit, XML-Editor
- Suchen Sie die Entität im Element edmx: StorageModels
- Entfernen Sie die DefiningQuery vollständig
- Benennen Sie den Speicher um: Schema = "dbo" in Schema = "dbo" (andernfalls generiert der Code einen Fehler, der besagt, dass der Name ungültig ist)
- Entfernen Sie die Eigenschaft store: Name
Ich habe den Schlüssel so belassen, wie er war, da es für mich in Ordnung war, dass beide Spalten Teil des Schlüssels sind.
quelle
Antworten:
Wenn eine Tabelle ohne PrimaryKey gefunden wird, wird sie als Ansicht behandelt.
Und Ansichten werden in der EDMX-Datei (in einem XML-Editor geöffnet) im Element StorageModel \ EntitySet [n] \ DefiningQuery angezeigt.
Wenn Sie eine DefiningQuery haben, wird die Entität schreibgeschützt, es sei denn, Sie fügen Änderungsfunktionen hinzu. Sie benötigen 3 Änderungsfunktionen (auch als gespeicherte Prozeduren bezeichnet), jeweils eine für Einfügen, Aktualisieren und Löschen.
Sie haben jedoch zwei Möglichkeiten:
Ändern Sie die Schlüsseldefinition:
In Ihrem Fall empfehle ich (1).
quelle
Fügen Sie der Tabelle einfach einen Primärschlüssel hinzu. Das ist es. Problem gelöst.
quelle
Ich habe einen Primärschlüssel in meiner Tabelle vermisst und diese Fehlermeldung erhalten. Nachdem ich den Schlüssel zur Tabelle hinzugefügt hatte, musste ich die Tabelle mit dem Designer aus dem edmx löschen, den edmx speichern und dann erneut aktualisieren, um die Tabelle wieder hinzuzufügen. Der Schlüssel wurde nicht abgeholt da es schon als view vergeben wurde. Dies erforderte keine manuelle Bearbeitung des edmx.
quelle
Fügen Sie der Tabelle einen Primärschlüssel hinzu, löschen Sie das Modell aus dem edmx-Modell, wählen Sie dann Update aus Datenbank auswählen, erstellen und ausführen ...... funktioniert
quelle
@ Palantir. Stellen Sie sicher, dass für beide Tabellen Primärschlüssel festgelegt sind, und achten Sie darauf, dass mehrere Primärschlüssel in einer Tabelle festgelegt sind.
quelle
Hoffe, es wird das Problem lösen.
quelle