2009-01-16 10 views
11

Buraya Entity Framework üzerinde bir tanıtıcı almaya çalışıyorum ve bazı hız darbelerine çarpıyorum ... İyi çalışıyor ve Get() yöntemim var sınanmıştır ama benim Sil yöntem çalışmıyor:Hata: Nesne, ObjectStateManager öğesinde bulunamadığından silinemedi

public static void Delete(string name) 
    { 
     J1Entities db = new J1Entities(); 
     db.DeleteObject(Get(name)); 
     db.SaveChanges(); 
    } 

ama aşağıdaki hatayı alıyorum: hata: o ObjectStateManager içinde bulunamadığı için nesne silinemez.

Hata ayıklayıcısını çalıştırdım ve DeleteObject öğesindeki nesne doğru ... neyi özlüyorum? Teşekkür ederim.

cevap

16

Her bir EF nesnesi, onu oluşturan (daha iyi bir kelime istemek için) yöneticiyle sıkı sıkıya ilişkilidir. veya ilişkili olduğu. db yöntemini Get yöntemine iletmediğinizden, Get'un kendi J1Entities sürümünü kullandığını veya nesnenin bağımsız olarak (belki de serileştirilmiş) oluşturulduğunu varsayalım.

Silmek için, önce numaralı telefon numarasını () bilmeniz gerekir. Bu, 'un bir nesneyi yöneticiye eklemesi anlamına gelebilir - ancak bu durumda, daha kolay bir seçenek db'u Get'a aktarmaktır, böylece Get aynı bağlamda yapılır (db otomatik olarak nesne ekleyecektir. kendini yaratır).

+0

Mükemmel ... Basit bir şey olduğunu düşündüm ... :) – naspinski

İlgili konular