Maison >développement back-end >C++ >Ninject et DbContext : garantir une élimination appropriée et optimiser la création d'instances ?
Avec les récentes mesures prises pour incorporer Ninject dans votre application MVC et introduire DbContext dans les constructeurs de vos contrôleurs, certaines questions se posent naturellement surgir :
Ninject garantit-il le nettoyage et l'élimination en temps opportun de mon DbContext instances ?
Comme indiqué dans cette réponse :
Selon la documentation CLR, le créateur d'un objet jetable est responsable de l'appel de Dispose, qui dans ce cas est Ninject. Par conséquent, les appels explicites à Dispose sont déconseillés.
Ninject supprime les objets jetables dans n'importe quelle portée autre que InTransientScope() dès que le GC collecte l'objet de portée auquel ils sont liés. Par conséquent, tous les objets jetables doivent être liés à l'aide d'une portée qui n'est pas InTransientScope().
Est-il possible d'éliminer l'obligation d'inclure l'argument DbContext dans chaque contrôleur ?
Évitez complètement d'utiliser une classe de base partagée pour les contrôleurs MVC. L'héritage de classe favorise un couplage étroit et entrave la maintenabilité. De plus, cela a tendance à créer des « objets divins » qui nécessitent des dépendances supplémentaires pour chaque contrôleur.
Vous pouvez également envisager d'utiliser des filtres enregistrés globalement pour gérer les problèmes transversaux. Vous pouvez concevoir des filtres spécifiques pour des composants logiques distincts, en adhérant au principe de responsabilité unique, qui serait violé par une classe de base partagée. En les enregistrant globalement, vous pouvez utiliser l'injection de constructeur et même créer des attributs (sans comportement) pour une application conditionnelle au niveau du contrôleur et/ou de l'action.
Comment puis-je optimiser la création d'instances DbContext ?
Référez-vous à la question suivante pour obtenir des informations : [Un DbContext par requête Web... pourquoi ?](https://stackoverflow.com/questions/9155198/one-dbcontext-per-web-request-why)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!