ObjectContext örneği atıldı ve artık bağlantı gerektiren işlemler için kullanılamaz.

alattin (17125) 9 yıl önce sordu

Entity Framework kullanan Asp.Net MVC uygulaması aşağıdaki gibi hata veriyor:

ObjectContext örneği atıldı ve artık bağlantı gerektiren işlemler için kullanılamaz.

Açıklama: Geçerli web isteği yürütülürken işlenmemiş özel durum oluştu. Lütfen hata ve kod içinde kaynaklandığı yer hakkında daha fazla bilgi almak için yığın izlemesini gözden geçirin.

Özel Durum Ayrıntıları: System.ObjectDisposedException: ObjectContext örneği atıldı ve artık bağlantı gerektiren işlemler için kullanılamaz.

Entity Framework ObjectContext örneği atıldı ve artık bağlantı gerektiren işlemler için kullanılamaz. hatasının sebebi ve çözümü nedir?

Toplam 1 cevap


alattin (17125) 9 yıl önce cevapladı

ObjectContext örneği atıldı ve artık bağlantı gerektiren işlemler için kullanılamaz. hatası dispose edilmiş bir DbContext nesnesi yüzünden oluşabilir. 

Örneğin ASP.NET MVC uygulamanızda View tarafından bir Include edilmemiş navigation propery'e erişmek istiyorsanız ve DBContext nesnenizi using ifadesi ile kullandıysanız bu hatayı alırsınız.

Asp.Net MVC örnek Navigation Property kullanan View:

<p>
@Model.Urun.Kategori.Ad
</p>

Controller tarafı

 using (CMSDbContext db = new CMSDbContext())
            {
                u = db.Urunler                  
                    .Include(t => t.Kategori)                  
                    .Where(t => t.Id == urunId).SingleOrDefault();
            
            }  

bu örnekte Kategori Include edilerek önceden yüklenmiştir (Eager loading). Eğer Include elmeseydik ve Kategori navigation property yani gezinme özelliğine view içinden erişmek isteseydik, ObjectContext örneği atıldı ve artık bağlantı gerektiren işlemler için kullanılamaz. hatası ile karşılaşacaktık.

Erişmek istediğiniz navigation propery'i Include ederek bu hatadan kurtulabilirsiniz.