Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net




 
Rserit
Developer
       
 1026  
 278

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.

Developer.