Rumah >pembangunan bahagian belakang >C++ >Mengapa Aplikasi Teras Rangka Kerja Entiti Saya Membuang Ralat 'Operasi Kedua Dimulakan', dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Aplikasi Teras Rangka Kerja Entiti Saya Membuang Ralat 'Operasi Kedua Dimulakan', dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Barbara Streisandasal
2025-01-03 16:51:39763semak imbas

Why Does My Entity Framework Core Application Throw a

Teras Rangka Kerja Entiti: Menyelesaikan Ralat "Operasi Kedua Dimulakan" semasa Pelaksanaan

Dalam isu yang dihadapi baru-baru ini semasa membangun dengan ASP.Net Core 2.0 dan Entiti Framework Core, sebuah ralat berlaku: "Operasi kedua bermula pada konteks ini sebelum operasi sebelumnya selesai." Ini pengecualian, yang dilemparkan oleh InvalidOperationException, menunjukkan bahawa berbilang operasi telah dimulakan pada konteks yang sama sebelum operasi sebelumnya selesai.

Memeriksa pangkalan kod, kaedah yang bertanggungjawab untuk mengisi senarai entiti dengan pelbagai sifat dan data berkaitan telah dikenal pasti sebagai pelakunya. Kaedah bermasalah termasuk pertanyaan untuk menggabungkan entiti berkaitan menggunakan penyata Sertakan dan memetakan entiti ini untuk melihat model.

Isu asas telah berakar umbi mengikut cara DbContext diselesaikan dan digunakan sepanjang aplikasi. Apabila menggunakan IoC (Penyongsangan Kawalan) untuk suntikan pergantungan, DbContext hendaklah didaftarkan sebagai Transient. Ini memerlukan penggunaan coretan kod berikut:

services.AddDbContext<MyContext>(ServiceLifetime.Transient);

atau

services.AddTransient<MyContext>();

dan bukannya:

services.AddDbContext<MyContext>();

Tingkah laku lalai ialah menambahkan DbContext sebagai skop, yang boleh membawa kepada konflik apabila berbilang urutan mengakses konteks secara serentak.

Selain itu, operasi tak segerak dan ungkapan lambda tak segerak boleh memburukkan lagi isu ini. Menggunakan Transient untuk DbContext memberikan setiap kelas contohnya, menghalang sebarang perubahan pada entiti merentas berbilang kelas.

Untuk mendapatkan maklumat lanjut tentang pengecualian ini, rujuk sumber berikut: [https://docs.microsoft.com/en-us/ef/core/miscellaneous/warnings/second-operation-started](https://docs.microsoft.com/en-us/ef/core/miscellaneous/ amaran/operasi kedua-dimulakan)

Atas ialah kandungan terperinci Mengapa Aplikasi Teras Rangka Kerja Entiti Saya Membuang Ralat 'Operasi Kedua Dimulakan', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn