asp.net Gridview ralat: "ObjectContext Instance Dilangkan"
Artikel ini menangani umum dalam aplikasi ASP.NET menggunakan rangka entiti: "Contoh ObjectContext telah dilupuskan dan tidak lagi boleh digunakan untuk operasi yang memerlukan sambungan." Ini sering berlaku apabila memaparkan GridView, khususnya mensasarkan medan data yang berkaitan (seperti InvalidOperationException
dalam contoh). LoanProductName
punca akar: pemuatan malas dan pelupusan dbContext
Mekanisme pemuatan lalai rangka kerja entiti mencipta objek proksi untuk sifat navigasi. Proksi ini bergantung pada untuk mengambil data yang berkaitan apabila diakses. Masalahnya timbul apabila DbContext
dilupuskan DbContext
sebelum permohonan cuba mengakses harta yang dimuatkan malas.
<code class="language-csharp">using (CosisEntities db = new CosisEntities()) { // ...data retrieval using db... } // ...later, GridView attempts to access lazy-loaded data...</code>
memastikan using
dibuang sejurus selepas blok tertutup. Sekiranya pengikatan data GridView berlaku DbContext
selepas pelupusan ini, ralat berlaku.
Penyelesaian: Memuatkan atau melumpuhkan pemuatan malas
Dua penyelesaian yang berkesan menghalang kesilapan ini:
1. Memuatkan yang bersemangat: secara eksplisit memuatkan harta navigasi yang diperlukan sebelum dibuang. DbContext
<code class="language-csharp">using (CosisEntities db = new CosisEntities()) { var query = db.MemberLoans.Include(m => m.LoanProduct); // Eager load LoanProduct // ...use query to populate GridView... }</code>
memastikan data Include(m => m.LoanProduct)
diambil bersama dengan LoanProduct
. MemberLoans
2. Lumpuhkan Lazy Loading: Ubah suai kelas entiti anda untuk mengelakkan pemuatan malas sama sekali. Ini lebih mudah untuk dataset yang lebih kecil tetapi mungkin memberi kesan kepada prestasi dengan dataset yang besar.
<code class="language-csharp">public class MemberLoan { public string LoanProviderCode { get; set; } public LoanProduct LoanProduct { get; set; } // Remove the 'virtual' keyword }</code>
dari harta navigasi menghalang penciptaan proksi pemuatan malas. virtual
dan memastikan GridView anda muncul dengan betul. Pilih kaedah yang paling sesuai dengan corak akses data aplikasi dan keperluan prestasi anda. ObjectContext
Atas ialah kandungan terperinci Mengapa ASP.NET GridView Saya Melemparkan 'Instance ObjectContext telah dilupuskan...' Apabila Menggunakan Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!