The ObjectContext instance has been disposed and can no longer be used for operations that require a connection Hatası
Selamlar,
Entity Framework üzerinde ilişkili tablodan değer almaya çalıştığınızda sıkça başınıza gelebilir çünkü değeri olmayan bir tablodan bir değer eşitlemeye çalışırsanız, "The ObjectContext instance has been disposed and can no longer be used for operations that require a connection" hatasını almanız normal olacaktır. Bu hata, ilgili veriler işlemlerinde EF varlıklarını içeren tüm işlemler için yaygındır.
EF içerisinde varsayılan olarak context sınıfımızda lazy-loading aktif olarak geliyor. EF, entity objeleri için proxy sınıflar oluşturur ve entity objelerine erişmenizi sağlar. İlişkili tabloları Include, Attach ya da Load gibi metodlarla çağırmak da bir çözüm olur.
MSDN üzerinde bir makalesi de mevcut.
Örneğin dövizler ve ürünler için bir yapı kuralım. Ürünler tablosunda UlkeId olsun ve bunun değerine dövizler üzerinden çekelim.
var Dovizler = DBContext.Dovizler.ToList(); // Dövizle ilişkili olan tablolarla birlikte değerler geliyor
var UrunSonuc = DBContext.Urunler.Where(x=>x.UlkeId == Dovizler.Ulkeler.Id).First();
Eğer Dovizler sonucuyla gelen, ilişkili tablo olan Ulkeler tablosu null gelmişse ya da buradan değer getirmemişse, sizce de bu hatayı vermesi normal olmayacak mı?
Umarım problem anlaşılmıştır,
Recep.
Bu gönderiyi 11.10.2018 10:15:49 tarihinde Rserit düzenledi.