Heim >Backend-Entwicklung >C++ >Ninject und DbContext: Ordnungsgemäße Entsorgung sicherstellen und Instanzerstellung optimieren?

Ninject und DbContext: Ordnungsgemäße Entsorgung sicherstellen und Instanzerstellung optimieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 21:36:09978Durchsuche

Ninject and DbContext: Ensuring Proper Disposal and Optimizing Instance Creation?

Was Sie bei der Verwendung von Ninject beachten sollten

Angesichts der jüngsten Schritte, die unternommen wurden, um Ninject in Ihre MVC-Anwendung zu integrieren und DbContext in die Konstruktoren Ihrer Controller einzuführen, stellen sich natürlich bestimmte Fragen entstehen:

Garantiert Ninject die Bereinigung und rechtzeitige Entsorgung meines DbContext? Instanzen?

Wie in dieser Antwort beschrieben:

Gemäß der CLR-Dokumentation ist der Ersteller eines Dispose-Objekts für den Aufruf von Dispose verantwortlich, in diesem Fall Ninject. Daher wird von expliziten Aufrufen von Dispose abgeraten.

Ninject entsorgt Einwegobjekte in einem anderen Bereich als InTransientScope(), sobald der GC das Bereichsobjekt erfasst, an das sie gebunden sind. Daher sollten alle Einwegobjekte mit einem Bereich gebunden werden, der nicht InTransientScope() ist.

Ist es möglich, die Anforderung, das DbContext-Argument in jeden Controller aufzunehmen, zu eliminieren?

Vermeiden Sie gänzlich die Verwendung einer gemeinsam genutzten Basisklasse für MVC-Controller. Die Klassenvererbung fördert eine enge Kopplung und beeinträchtigt die Wartbarkeit. Darüber hinaus werden tendenziell „Gottobjekte“ erstellt, die weitere Abhängigkeiten für jeden Controller erfordern.

Alternativ sollten Sie erwägen, global registrierte Filter zu verwenden, um übergreifende Probleme zu lösen. Sie können spezifische Filter für unterschiedliche logische Komponenten entwerfen und dabei das Single-Responsibility-Prinzip einhalten, das durch eine gemeinsam genutzte Basisklasse verletzt würde. Indem Sie sie global registrieren, können Sie die Konstruktorinjektion nutzen und sogar Attribute (ohne Verhalten) für die bedingte Anwendung auf Controller- und/oder Aktionsebene erstellen.

Wie kann ich die Erstellung von DbContext-Instanzen optimieren?

Einblicke finden Sie in der folgenden Frage: [Ein DbContext pro Webanfrage... warum?](https://stackoverflow.com/questions/9155198/one-dbcontext-per-web-request-why)

Das obige ist der detaillierte Inhalt vonNinject und DbContext: Ordnungsgemäße Entsorgung sicherstellen und Instanzerstellung optimieren?. 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