Ich habe eine Sicht in SQL Server erstellt, die die wichtigsten Spalten aus verschiedenen Tabellen enthält. Das Drucken des Inhalts der Tabelle in der Asp.net-MVC-Ansicht funktioniert gut, aber wenn ich die Details eines einzelnen Datensatzes abrufen möchte, tritt das Problem auf.
Die Anzahl der übergebenen Primärschlüsselwerte muss der Anzahl der für die Entität definierten Primärschlüsselwerte entsprechen.
Ich navigiere zu dem entsprechenden Datensatz:
%Vor% Datensatznummer ist der Primärschlüssel. Ich setze das manuell, indem ich mit der rechten Maustaste auf die spezifische Variable im .edmx
-Modell klicke. Dann versuche ich, die spezifischen Daten zu erhalten, indem ich Folgendes benutze:
Und das Modell sieht so aus:
%Vor%Im Moment benutze ich den folgenden Code, damit alles funktioniert. Aber ich denke nicht, dass dies ein sehr guter Weg oder effizient ist. Und ich bin sehr gespannt, wie ich den Fehler oben beheben kann!
%Vor%Jemand hat eine Idee, warum dieser Fehler auftritt? Danke für die Hilfe!
Wenn Sie Ihren Primärschlüssel in .edmx
setzen, sollten Sie auch Ihre Datenbank aktualisieren, da Sie PK in Ihrem Modell und nicht in Ihrer Datenbank haben. Aktualisierung: funktioniert nicht für Ansichten.
Verwenden Sie für Ansichten .SingleOrDefault
anstelle von Find()
.
Ändern Sie in diesem Szenario die folgende Zeile: RecordDataView record = db.RecordDataView.Find(id);
Zu den folgenden: RecordDataView recorddataview = db.RecordDataView.SingleOrDefault(m => m.Record_number == id);
Wenn Ihre Datenbanktabelle kein Primärschlüsselfeld angibt, wird Ihr edmx-Modell davon ausgehen, dass jedes Feld ein Schlüssel ist. Stellen Sie also sicher, dass Ihre Datenbank und Ihr Entitätsmodell dasselbe sagen.
Wenn Ihr Modell und Ihre Datenbank den Primärschlüssel richtig angeben, können Sie .Find () verwenden und es wird funktionieren.
Tags und Links asp.net-mvc .net sql-server entity-framework edmx