Rumah >pembangunan bahagian belakang >C++ >Ninject dan DbContext: Memastikan Pelupusan yang Betul dan Mengoptimumkan Penciptaan Contoh?
Dengan langkah-langkah terbaru yang diambil untuk memasukkan Ninject ke dalam aplikasi MVC anda dan memperkenalkan DbContext ke dalam pembina pengawal anda, soalan tertentu secara semula jadi timbul:
Adakah Ninject menjamin pembersihan dan pelupusan saya tepat pada masanya Contoh DbContext?
Seperti yang digariskan dalam respons ini:
Setiap dokumentasi CLR, pencipta objek Pakai bertanggungjawab untuk memanggil Buang, yang dalam kes ini ialah Ninject. Oleh itu, panggilan eksplisit kepada Buang adalah tidak digalakkan.
Ninject melupuskan objek Pakai dalam mana-mana skop selain InTransientScope() sebaik sahaja GC mengumpul objek skop yang diikat dengannya. Oleh itu, semua objek Boleh guna hendaklah diikat menggunakan skop yang bukan InTransientScope().
Adakah ia boleh dilakukan untuk menghapuskan keperluan untuk memasukkan argumen DbContext dalam setiap pengawal?
Elakkan menggunakan kelas asas yang dikongsi untuk pengawal MVC sama sekali. Warisan kelas memupuk gandingan yang ketat dan menghalang kebolehselenggaraan. Selain itu, ia cenderung untuk mencipta "objek tuhan" yang memerlukan kebergantungan selanjutnya untuk setiap pengawal.
Sebagai alternatif, pertimbangkan untuk menggunakan penapis berdaftar global untuk menangani kebimbangan silang. Anda boleh mereka bentuk penapis khusus untuk komponen logik yang berbeza, mematuhi Prinsip Tanggungjawab Tunggal, yang akan dilanggar oleh kelas asas yang dikongsi. Dengan mendaftarkannya secara global, anda boleh menggunakan suntikan pembina dan juga mencipta atribut (tanpa gelagat) untuk aplikasi bersyarat pada tahap pengawal dan/atau tindakan.
Bagaimanakah saya boleh mengoptimumkan penciptaan tika DbContext?
Rujuk soalan berikut untuk mendapatkan cerapan: [Satu DbContext setiap permintaan web... kenapa?](https://stackoverflow.com/questions/9155198/one-dbcontext-per-web-request-why)
Atas ialah kandungan terperinci Ninject dan DbContext: Memastikan Pelupusan yang Betul dan Mengoptimumkan Penciptaan Contoh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!