Fehlerbehebung beim Fehler "Anhänge einer Entität des Typs 'Modellname' fehlgeschlagen" in ASP.NET MVC -Aktionen
Das gefürchtete "fürfees Anhängen einer Entität vom Typ" Modellname "fehlgeschlagen" in ASP.NET MVC entsteht normalerweise, wenn versucht wird, einen Datenbankdatensatz zu aktualisieren, der sich in einem abgetrennten Zustand befindet. Diese Fehlermeldung zeigt normalerweise ein primäres Schlüsselfehler an, was darauf hindeutet, dass die Entität als neu anstelle eines vorhandenen Datensatzes behandelt wird. Die Lösung beinhaltet die korrekte Verwaltung des Status des Unternehmens innerhalb des Entity -Frameworks.
Dieses Problem taucht häufig während der Bearbeitung von Postaktionen auf. Die Entität wird zunächst als "modifiziert" markiert, aber ein nachfolgender Methodenaufruf (vor dem Status -Update) kann dies somit dieselbe Entität versehnen, wodurch es sich löst.
Der Schlüssel zur Lösung dieser Verfolgung besteht darin, eine unbeabsichtigte Entität zu verhindern, bevor der Zustand geändert wird. Die AsNoTracking()
-Methode von Entity Framework liefert die Lösung.
Hier erfahren Sie, wie Sie das Problem beheben und die Verwendung von AsNoTracking()
innerhalb einer modifizierten canUserAccessA
-Methode demonstrieren:
<code class="language-csharp">private bool canUserAccessA(int aID) { int userID = WebSecurity.GetUserId(User.Identity.Name); // Disable tracking to prevent state conflicts int aFound = db.Model.AsNoTracking().Where(x => x.aID == aID && x.UserID == userID).Count(); return (aFound > 0); }</code>
Durch Integration von AsNoTracking()
ruft die canUserAccessA
-Methode die Entität nun ohne Verfolgung von Änderungen ab. Dies verhindert die Störung in den Status der Entität während der Bearbeitungs -Post -Aktion, wodurch der Fehler "Anhängen eines Entität anhängen" effektiv beseitigt wird. Dies stellt sicher, dass die nachfolgende Modified
-Statezuweisung korrekt funktioniert.
Das obige ist der detaillierte Inhalt vonWarum tritt in ASP.NET MVC -Bearbeitungsaktionen und wie kann es gelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!