Mencegah Konflik Rujukan Entiti dalam Rangka Kerja Entiti 4.1
Rangka Kerja Entiti mungkin membuang "Objek entiti tidak boleh dirujuk oleh beberapa contoh pengecualian IEntityChangeTracker". Ini berlaku apabila konteks berbeza cuba mengurus entiti yang sama secara serentak. Ini biasanya berlaku apabila menyimpan entiti dengan objek berkaitan yang dimuatkan daripada konteks berasingan.
Masalahnya:
Bayangkan perkhidmatan yang berasingan, seperti EmployeeService
dan CityService
, masing-masing mencipta konteks Rangka Kerja Entiti sendiri. Jika CityService
memuatkan bandar dan EmployeeService
kemudian menambahkan bandar yang sama itu kepada pekerja, konflik timbul kerana bandar itu dijejaki oleh dua konteks berbeza.
Penyelesaian:
Kuncinya ialah menggunakan konteks tunggal yang dikongsi. Suntikan konteks ini ke dalam kedua-dua perkhidmatan:
<code class="language-csharp">var context = new YourDbContext(); // Create the context once EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context); // Both services use the same context</code>
Penyelesaian yang lebih elegan mungkin adalah untuk menyatukan entiti berkaitan ke dalam satu perkhidmatan. Contohnya, bukannya EmployeeService
dan CityService
, buat EmployeeCityService
. Ini memudahkan pengurusan konteks dan mengelakkan konflik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang 'Objek entiti tidak boleh dirujuk oleh berbilang contoh IEntityChangeTracker' Pengecualian dalam Rangka Kerja Entiti 4.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!