dbContext Best Practice: Jedes HTTP fordert einen dbContext an
In der ASP.NET -Kernanwendung wird die Erstellung einer neuen DBContext -Instanz für jede HTTP -Anforderung weithin empfohlen.
Vermeiden Sie Datencache -Probleme und Leistungsverbesserung
dbContext kann die Daten zwischenspeichern. Der DBContext unter Verwendung eines einzelnen Modus beschränkt den Datencache auf den Umfang einer einzelnen Anforderung, reduziert die Datenbankaufruf, wodurch die Leistung verbessert wird.
Der Vorteil jeder Anforderung eines dbContext
Einzelgeschäftsangelegenheiten: Mehrere Vorgänge werden in einem DBContext ausgeführt, um die Transaktionsverarbeitung zu erleichtern und die Datenintegrität sicherzustellen.
vereinfachtes Code:
Die Klasse, die die Daten modifiert, muss nur - aufrufen, die Komplexität des Codes verringern und die Verantwortung für die Verwaltung von DBContext vermeiden.
Entitätsheilung:
Die Entität kann problemlos innerhalb des Anforderungsbereichs übergeben, da sie alle aus demselben DBContext stammen. -
Die Nachteile des transienten dbcontext
_context.SaveChanges()
- Obwohl es möglich ist, den DBContext als vorübergehenden Dienst zu registrieren, kann dies zu den folgenden Problemen führen:
Handbuch Änderungsverfolgung:
Jedes Objekt muss
aufrufen, um Änderungen zu sparen, die Komplexität zu erhöhen und das Prinzip der einzelnen Verantwortlichkeiten zu verletzen.
Entitätsumfangsbegrenzung:
Die Entität kann den Umfang der Klasse, die sie geladen hat, nicht verlassen und kann nicht in anderen Klassen verwendet werden.
Release -Management:
Die DBContext -Instanz korrekt veröffentlicht, erfordert einen zusätzlichen Domänenmechanismus oder eine manuelle Verarbeitung. -
Andere optionale Lösungen
context.SaveChanges()
-
Verwenden Sie DBContextFactory für die explizite Kontrolle: Inject dbContextFactory injizieren, damit die Geschäftslogik die Erstellung und Freisetzung von DBContext explizit steuern kann, um eine größere Flexibilität zu erzielen.
- Die Einheit des Containermanagements: Lassen Sie den DI -Container DBContext verwalten, die Geschäftslogik einfach verwalten und die Erstellung, Freigabe und Übermittlung des Prozesses abstrahieren.
Angelegenheiten Dekorationen:
Das dekorative Gerät kann auf das Befehlsverarbeitungsprogramm angewendet werden, um das richtige Transaktionsmanagement zu gewährleisten und es nur dann einzureichen, wenn es erfolgreich ist.
Das obige ist der detaillierte Inhalt vonSollte ich einen DBContext pro HTTP -Anfrage in meiner Anwendung verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!