14

चलो कहते हैं कि मैं इन दो बहुत ही बुनियादी संस्थाओं करते हैं:EF4.1 कोड पहले: निर्भर इकाई में नेविगेशन संपत्ति के बिना एक रिश्ते के लिए हटाने झरना अक्षम कैसे

public class ParentEntity 
{ 
    public int Id; 
    public virtual ICollection<ChildEntity> Childrens; 
} 

public class ChildEntity 
{ 
    public int Id; 
    public int ParentEntityId; // Foreign Key 
    public virtual ParentEntity parent; // [NOTWANTED] 
} 

कुछ कारणों के लिए, मैं नहीं चाहता चाइल्डएन्टिटी को अपने माता-पिता को संदर्भ वापस रखना है। मैं बस इसे पेरेंट एंटीटी आईडी रखना चाहता हूं लेकिन कुछ और नहीं। अभी तक, कोई समस्या नहीं, मैं बस [NOTWANTED] रेखा को हटा देता हूं, और सब कुछ अपेक्षित काम करता है।

मेरी समस्या यहां है: उस विशिष्ट मामले में कैस्केड हटाने को कैसे अक्षम करें?

अगर मैं अभी भी माता पिता नेविगेशन संपत्ति यह जितना आसान होगा था:

modelBuilder.Entity<ChildEntity>() 
    .HasRequired(c => c.parent) 
    .WithMany(p => p.Childrens) 
    .WillCascadeOndelete(false) 
नेविगेशन संपत्ति मैं पता नहीं कैसे मैं हटाने पर झरना निष्क्रिय करने के लिए प्राप्त कर सकते हैं (बिना

हालांकि यह विश्व स्तर पर अक्षम किए बिना बेशक, न ही प्रति टेबल, लेकिन सिर्फ संबंध के लिए)।

अभी मैंने क्या किया हटाने पर झरना को निष्क्रिय करने के क्रम में, एक नल पूर्णांक के रूप में विदेशी कुंजी स्थापित करने के लिए है, लेकिन यह बहुत नहीं है:

public int? ParentEntityId; // Foreign Key - nullable just to disable cascade on delete 

मैं इसके साथ काम करने के लिए कैसे प्राप्त कर सकते हैं धाराप्रवाह एपीआई? सोचो कि यह संभव होना चाहिए।

+0

आप .hasOne (ParentEntity) – Saeid

उत्तर

17

आप संघ के दूसरी तरफ से यह कॉन्फ़िगर करना होगा:

modelBuilder.Entity<ParentEntity>() 
    .HasMany(p => p.Children) 
    .WithRequired() 
    .HasForeignKey(c => c.ParentEntityId) 
    .WillCascadeOnDelete(false); 
+1

woooo की जरूरत है! यह अच्छा है, बहुत बहुत धन्यवाद :) – darkey

+0

मुझे बदलना पड़ा था .थ्रूक्वायर() से .थ्रूक्वायर (सी => सी। माता-पिता) – Mason240

+0

यदि आपके बच्चे से माता-पिता को नेविगेशन प्रॉपर्टी है तो आप कैस्केड को कॉन्फ़िगर कर सकते हैं बाल मैपिंग –

संबंधित मुद्दे