12

Bir Attachment nesnesini modellemek için EF 4 STE'leri kullanıyorum. Eklenti bir Ad, Açıklama, Tarih içerir ve en önemlisi Veriler (byte[]). Yüklemeyi optimize etmek için, kesinlikle gerekli olana kadar Veri özelliğini almak istemiyorum, yani kullanıcı, istemciden Download'u tıklattığında. Bu yaklaşımı takip için bir çaba Entity Framework Bölme Tablosu Sil

, ben masa bölme tekniği here tarif kullandı. Eki eki Ek (Ad, Açıklama, Tarih) ve Ek Verileri (Veri) bölümüne böldüm. EF modelimde bire bir ilişki var. Ben AttachmentData (yani attachment.AttachmentData == null) olmadan bir Eklenti silmeye kadar her şey iyi çalışıyor. karşılaşılan

Geçersiz veriler: aşağıdaki özel durum alıyorum. Gerekli bir ilişki eksik. Kısıtlama ihlali kaynağını belirlemek için StateEntries inceleyin.

Ben similar post gördüm, ama STE en ve ApplyChanges uzatma yöntemi ile çalışmasını sağlamak için görünmüyor olabilir.

Veri erişim kodum şu anda basit: Bağlamın ApplyChanges() ve ardından SaveChanges().

ben basit silme SQL işlevini denenmiş ve her iki taraftaki eşledikten ve aslında çalıştık; Ancak eki kırdı. Her özellik için iki özellik için ekleme işlevi eşlenemiyorum.

Deneyebilirim bazı diğer seçenekler üzerinde herhangi bir fikir? Ek ve AttachmentData arasındaki ilişki isteğe bağlı olabilir mi? 1 ila 0+ yaptığımda, Their primary keys may collide olduğunu belirten bir haritalama hatası alıyorum.

Herhangi bir öneride bulunmak üzere.

Teşekkürler!

cevap

6

çözüm bağlantılı soruya benzer ama KDU'ların belirli özelliği kullanmak gerekir - ApplyChanges:

context.Attachments.ApplyChanges(att); 
if (context.ObjectStateManager.GetObjectStateEntry(att).State == EntityState.Deleted) 
{ 
    var data = new AttachmentData() {Id = att.Id}; 
    context.AttachmentDataSet.Attach(data); 
    context.AttachmentDataSet.DeleteObject(data); 
} 
context.SaveChanges(); 
+0

teşekkürler yanıt için bir demet! Harika çalışıyor! –

+0

Bu beni derinden şaşırtıyor: EF neden varlıklar aynı masada depolandığından, birinin silinmesi diğerini de silecektir neden öğrenemiyor? Neden onu yüklemelisin? –

+1

@FyodorSoikin: Sanırım hiç kimse bu özelliği henüz kullanmadı. –