2013-02-15 48 views
8

हम इकाई की रूपरेखा कोड पहले में काम कर रहे हैंएफई कोड पहले झरना पर हटाना विदेशी कुंजी एक-से-कई

हम एक वर्ग वीडियो है

class Video{ 
    List<ImageInfo> Images{ 
     get; set; 
    } 
} 

हमारी छवि infoclass छवि के लिए एक पथ है और कुछ अन्य जानकारी

class ImageInfo{ 
    String path; 
    ... 
} 

हम जब वीडियो

को हटाने एफई imageinfos को दूर करना चाहते हैं

modelBuilder 
    .Entity<Video>() 
    .HasMany(v => v.Images) 
    .WithRequired() 
    .WillCascadeOnDelete(true); 

हम अपने imageinfo कक्षा में वीडियो के लिए वापस एक लिंक जोड़ने के लिए नहीं करना चाहते: 10

तो हम modelbuilder इस प्रकार की तरह बदल दिया है।

क्या 2 अलग-अलग विदेशी कुंजी के बिना कैस्केड कार्यक्षमता को हटाना संभव है?

संपादित

imageInfo की video_id डेटाबेस में भर कर नहीं प्राप्त करता है जब एक वीडियो बचत।

http://pbrd.co/14X82vb

कैसे हम इसे ठीक कर सकते हैं?

मैं अगर इससे संबंधित पता नहीं है, लेकिन जब हम एक ही समय में छवियों के साथ एक नया वीडियो जोड़ने के लिए, हम इस त्रुटि मिलती है:

Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values. 

उत्तर

14

WithRequired 2 तरफा संबंध परिचय देता है। तो आपको निम्नलिखित करना चाहिए।

modelBuilder 
    .Entity<Video>() 
    .HasMany(v => v.Imgages) 
    .WithOptional() 
    .WillCascadeOnDelete(true); 

... और यह सोचते हैं आप संबंध दूसरी तरह के आसपास चाहते हैं ...

public class Video { } 
public class ImageInfo { 
    public virtual Video { get; set; } 
} 

modelBuilder 
    .Entity<ImageInfo>() 
    .HasRequired(v => v.Video) 
    .WithMany() 
    .WillCascadeOnDelete(true); 

पुनश्च: मुझे लगता है कि List<ImageInfo>virtual होना चाहिए, इसलिए यहां मैं इसे कैसे परिभाषित होता है। ..

public class Video { 
    public Video() { this.Images = new List<ImageInfo>(); } 
    public virtual ICollection<ImageInfo> Images { get; set; } 
} 
+0

एक आकर्षण की तरह काम करता है। हमें दूसरी समस्या भी थी। हमने छवियों की संपत्ति में एक नई सूची असाइन की, जिसके कारण डेटाबेस सिंक्रनाइज़ेशन विफल हो गया। इसलिए हमने किसी संपत्ति को कभी भी नई सूची असाइन नहीं करना सीखा। (देखने योग्य चयन और डाटाबेसिंग के समान) –

+0

उत्तर की स्वीकृति की सराहना की जाएगी :-)। इसके अलावा यह आपकी खुद की प्रतिष्ठा को और अधिक बेहतर उत्तर देने में भी मदद करता है। – AxelEckenberger

+0

हमें अभी भी वीडियो हटाने पर छवियों को कैस्केड करने की समस्या है: मूल प्रश्न देखें (संपादित भाग) –