Instanz der entity-Typ kann nicht verfolgt werden, weil eine andere Instanz mit dem gleichen key-Wert verfolgt werden
Ich bin mit generic repository pattern in asp.net core 2.0, die können nicht über den repository-Objekt, wenn ich werde aktualisieren Sie den Eintrag der neuen für eine Zeit erfolgreich, aber wenn ich versuche zu aktualisieren, für mehr dann einmal wirft es die folgende Ausnahme:
Die Instanz der entity-Typ "Firma" kann nicht verfolgt werden, weil eine andere Instanz mit dem gleichen key-Wert für {'ID'} bereits verfolgt wird. Bei der Befestigung der vorhandenen Einrichtungen, sicherzustellen, dass nur eine Instanz der Entität mit einem bestimmten Schlüssel-Wert angefügt wird. Erwägen Sie die Verwendung 'DbContextOptionsBuilder.EnableSensitiveDataLogging' zu sehen, die widersprüchlichen wichtige Werte.
public ActionResult Edit(Int64 id, Company collection)
{
try
{
//TODO: Add update logic here
interfaceobj.updateModel(collection);
interfaceobj.Save();
return RedirectToAction(nameof(Index));
}
catch(Exception ex)
{
throw ex;
}
}
- Lesen Sie stellen, und erstellen Sie eine minimale reproduzierbare Beispiel. Sie sollten nicht wiederverwenden DbContext zwischen den Anforderungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre DB-Kontext geteilt werden, indem mehrere Anfragen, was bedeutet, dass die Entität, die Sie Bearbeiten gerade verfolgt bereits.
Dies ist wahrscheinlich, weil Ihre repository-service ist ein Singleton, anstatt Scoped, und so Ihre DB-Kontext wiederverwendet mit der Person, die verfolgt werden, wenn es herausgezogen, und setzen Sie dann wieder in die gleiche Instanz der DB-Kontext.
Was Sie tun sollten stattdessen ist mit einer Scoped Repository, was bedeutet, dass eine neue Instanz erstellt werden, für jede Anforderung. Ebenso haben Sie auch eine pro-request-DB-Kontext.
Wenn Sie sich registrieren, Ihr service wird es mit
services.AddSingleton<..>
Ändern
services.AddScoped<..>
, wenn Sie Spritzen es in Ihre controller erhalten Sie dann eine neue Instanz pro Anfrage und Ihre updates sollten funktionieren..AddDbContext<MyDbContext>(ConfigDb)
Müssen Sie Losgelöst Eintrag.
Vielleicht kann es dir helfen:
Dies wird Ihnen helfen!