Heim > Backend-Entwicklung > C++ > ASP.NET MVC: Wie löste ich Fehler 'Anbringen einer Entität fehlgeschlagen' aufgrund doppelter Primärschlüssel?

ASP.NET MVC: Wie löste ich Fehler 'Anbringen einer Entität fehlgeschlagen' aufgrund doppelter Primärschlüssel?

Linda Hamilton
Freigeben: 2025-01-30 07:56:09
Original
613 Leute haben es durchsucht

ASP.NET MVC: How to Solve

Lösen Sie den Fehler "zusätzlicher Entität", der durch den Hauptschlüsselkonflikt in ASP.NET MVC

verursacht wird In ASP.NET MVC ist ein Fehler aufgetreten, wenn das Bearbeitungsmodell auf "modifiziert" aktualisiert wird: "Die Entität mit dem zusätzlichen Typ des 'modellnamens' hat denselben Primärschlüsselwert nicht bestanden". Dieser Fehler trat auf, wenn das zu aktualisierte Entität in der im Kontext vorhandenen Tracking -Registrierung vorhanden ist.

In dem angegebenen Szenario wird der Fehler in der folgenden Reise herausgeworfen:

Fehleranalyse:
<code class="language-csharp">db.Entry(aViewModel.a).State = EntityState.Modified;</code>
Nach dem Login kopieren

Das Problem stammt aus dem Operation bearbeiten (GET)

des Controllers, der die zu bearbeitende Entität lädt. In diesem Vorgang versuchen canuseraccessa

Methoden, den Benutzerzugriff durch unabhängige Ladeeinheiten zu überprüfen. Seitdem wird die Entität im Trennungszustand platziert. Lösung:

Um den Konflikt zu lösen, muss die Methode

canuseraccessa geändert werden, um sicherzustellen, dass die Entität im Kontext der Abfrage nicht verfolgt wird. Dies kann erreicht werden, indem die Methode wie unten gezeigt aufgerufen wird:

Erläuterung: .AsNoTracking() unter Verwendung wird die Entität beim Laden nicht nach dem Kontext verfolgt. Dies verhindert, dass nachfolgende Aktualisierungen mit dem Trennungszustand widersprüchlich sind.

<code class="language-csharp">private bool canUserAccessA(int aID)
{
    int userID = WebSecurity.GetUserId(User.Identity.Name);
    int aFound = db.Model.AsNoTracking().Where(x => x.aID == aID && x.UserID==userID).Count();

    return (aFound > 0); //如果 aFound > 0,则返回 true,否则返回 false。
}</code>
Nach dem Login kopieren
Schlussfolgerung:

Fehler "Der Entitätsfehler des zusätzlichen Typs ist" modelName "..." kann auftreten, wenn die zu aktualisierte Entität im Kontext verfolgt wurde. Um diesen Konflikt zu lösen, muss sichergestellt werden, dass eine unabhängige Ladeeinheit deaktiviert und verfolgt ist, z. B. die modifizierte Methode

canuseraccessa

. .AsNoTracking()

Das obige ist der detaillierte Inhalt vonASP.NET MVC: Wie löste ich Fehler 'Anbringen einer Entität fehlgeschlagen' aufgrund doppelter Primärschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage