Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membetulkan 'Operasi kedua bermula pada konteks ini sebelum operasi sebelumnya selesai' dalam Teras Rangka Kerja Entiti?
Teras Rangka Kerja Entiti: Menyelesaikan "Operasi kedua bermula pada konteks ini sebelum operasi sebelumnya selesai"
Mesej ralat "Operasi kedua bermula pada konteks ini sebelum operasi sebelumnya selesai" dalam Teras Rangka Kerja Entiti biasanya menunjukkan bahawa berbilang benang cuba mengakses contoh DbContext yang sama secara serentak. Ini boleh berlaku apabila DbContext didaftarkan sebagai perkhidmatan berskop, yang mencipta kejadian baharu untuk setiap permintaan.
Skop Pendaftaran DbContext
Secara lalai, Teras Rangka Kerja Entiti mendaftarkan DbContext sebagai perkhidmatan berskop. Ini bermakna bahawa contoh baharu DbContext dibuat untuk setiap permintaan HTTP atau perkhidmatan berskop. Dalam persekitaran berbilang benang, ini boleh membawa kepada mesej ralat yang dipersoalkan.
Pendaftaran DbContext Sementara
Untuk menyelesaikan isu ini, adalah disyorkan untuk mendaftarkan DbContext sebagai perkhidmatan sementara. Ini memastikan bahawa kejadian baharu dibuat untuk setiap pengendali permintaan individu:
services.AddTransient<MyContext>();
Sebagai alternatif, anda boleh menggunakan ServiceLifetime.Transient:
services.AddDbContext<MyContext>(ServiceLifetime.Transient);
Keburukan Pendaftaran Sementara
Mendaftarkan DbContext sebagai sementara mempunyai kelemahannya. Entiti yang diuruskan oleh konteks tidak boleh diteruskan merentas berbilang panggilan kaedah atau kelas yang menggunakan contoh DbContext yang sama.
Punca Potensi Lain
Selain pendaftaran DbContext sementara, lain-lain potensi punca ralat termasuk:
Maklumat Tambahan
Untuk butiran lanjut tentang seumur hidup dan rangkaian DbContext keselamatan, rujuk dokumentasi Teras Rangka Kerja Entiti:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan 'Operasi kedua bermula pada konteks ini sebelum operasi sebelumnya selesai' dalam Teras Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!