Selesaikan masalah "objek entiti dirujuk oleh berbilang kejadian IEntityChangeTracker" dalam Rangka Kerja Entiti 4.1
Apabila menyimpan entiti yang mengandungi rujukan entiti menggunakan Rangka Kerja Entiti 4.1, anda mungkin menghadapi pengecualian "objek entiti Rangka Kerja Entiti ADO.Net tidak boleh dirujuk oleh berbilang kejadian IEntityChangeTracker." Pengecualian ini biasanya berlaku apabila berbilang konteks Rangka Kerja Entiti mengurus entiti yang sama.
Sebagai contoh, dalam coretan kod, kedua-dua kelas perkhidmatan EmployeeService
dan CityService
masing-masing mencipta kejadian konteks mereka sendiri. Apabila entiti city1
diambil daripada CityService
, ia dilampirkan pada konteks CityService
. Kemudian, apabila e1
entiti pekerja dibuat dan rujukannya diberikan kepada city1
, kedua-dua entiti itu ditambahkan pada konteks EmployeeService
.
Akibatnya, city1
dilampirkan pada dua konteks berbeza, menyebabkan pengecualian.
Penyelesaian:
Kaedah 1: Gunakan satu konteks
Buat satu contoh konteks dan masukkannya ke dalam dua kelas perkhidmatan EmployeeService
dan CityService
:
<code class="language-csharp">var context = new YourDbContext(); // 创建单例上下文 EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context); // 使用相同的上下文实例</code>
Kaedah 2: Gabungkan Perkhidmatan
Satukan entiti berkaitan menjadi satu perkhidmatan, yang bertanggungjawab untuk semua interaksi entiti. Pendekatan ini memudahkan manipulasi hubungan antara entiti.
Dengan kaedah di atas, anda boleh mengelakkan pengecualian "Objek entiti tidak boleh dirujuk oleh berbilang kejadian IEntityChangeTracker" dan berjaya menyimpan entiti yang mengandungi rujukan entiti.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Pengecualian 'Objek Entiti yang Dirujuk oleh Berbilang Kejadian IEntityChangeTracker' dalam Rangka Kerja Entiti 4.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!