dbContext -Instanz: Eine Webanforderung eine?
Designkonzept
Erstellen einer unabhängigen DBContext -Instanz für jede Webanforderung für jede Webanwendung. Im Vergleich zur Verwendung einer einzelnen DBContext -Instanz für die gesamte Anwendung hat diese Methode viele Vorteile.
Vorteile
Schauspieldomäne: Jede Webanforderung wird in ihrer eigenen Domäne ausgeführt, um eine klare Transaktionsgrenze zu erreichen. Dies vereinfacht die Fehlerbehandlung und gewährleistet die Datenintegrität, indem die Auswirkungen des Ausfallbetriebs in der aktuellen Anforderung begrenzt werden.
Isolierung:
Jede Webanforderung hat einen eigenen Datenbankkontext, um Datenkonflikte zwischen gleichzeitigen Anforderungen zu verhindern. Dies ist besonders wichtig bei mehreren Benutzern oder Prozessen, die auf dieselbe Datenbank zugreifen. -
Löschen: Durch Verwaltung von DBContext -Instanzen in der Webanforderungsdomäne, der Geschäftslogik und der zugrunde liegenden Datenzugriffsschichtabkopplung. Dies macht den Code modularer und leichter zu warten.
-
Anwendbare Szenen
- Für jede Webanforderung zur Verwendung einer einzelnen DBContext -Instanz gilt sie für die folgenden Anwendungsszenarien:
Datenkonsistenz ist von entscheidender Bedeutung, und es ist erforderlich, die Transaktion in einer einzelnen Anforderung zu begrenzen.
Das Zugriffsvolumen der Datenbank ist sehr hoch, und die Isolation ist entscheidend, um Datenkonflikte zu verhindern.
Die Geschäftslogik ist kompliziert und unterscheidet sich deutlich zwischen Datenzugriff und Anwendungslogik.
Die Einschränkungen der Instanz des transienten dbcontext
-
Obwohl theoretisch dbContext theoretisch als Transient registriert (dh jedes Objekt ist eine Instanz), kann dies zu folgenden Problemen führen: -
- Ändern Sie den Verlust:
Jedes Objekt hat eine eigene DBContext -Instanz und muss durch
erhalten bleiben. Wenn dieser Schritt ignoriert wird, gehen Änderungen verloren.
Entitätsbereich: Die von einer dbContext -Instanz geladene Entität kann im Kontext einer anderen Instanz nicht verwendet werden. Dies kompliziert den Code und verursacht Leistungsprobleme.
Kontextbesitz:
Anzeige dbContext -Instanzen wird komplizierter und muss explizit behandelt oder automatisch an der Anforderungsgrenze zur Verfügung stehen.
-
Schlussfolgerung
context.SaveChanges()
Die Verwendung einer einzelnen DBContext -Instanz für jede Webanforderung hat offensichtliche Vorteile bei Datenkonsistenz, Isolation und Code -Wartung. Nach dem Abwägen der Vor- und Nachteile wird diese Methode für die Datenintegrität und gleichzeitig dringend empfohlen. -
Das obige ist der detaillierte Inhalt vonSollte ich in meiner Anwendung einen DBContext pro Webanforderung verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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