द्वारा हटाई गई संबंधित संस्थाएं मुझे एंटीटी फ्रेमवर्क में हटाने के साथ कोई समस्या है। संक्षेप में, ईएफ डेटाबेस से एक इकाई को हटाने की कोशिश करता है भले ही मैंने डेटाबेस में कैस्केडिंग डिलीट का उपयोग करने के लिए ईएफ को स्पष्ट रूप से कॉन्फ़िगर किया हो।एंटिटी फ्रेमवर्क के साथ कैस्केडिंग डिलीट - ईएफ
मेरे डिजाइन:
मैं तीन इकाई प्रकार, MainEntity
, EntityTypeA
और EntityTypeB
है। EntityTypeA
और EntityTypeB
हटाते समय ईएफ को कैस्केड हटाने का उपयोग करने के लिए कॉन्फ़िगर किया गया है। दूसरे शब्दों में, यदि मैं MainEntity
का उदाहरण हटा देता हूं, तो मुझे सभी संबंधित EntityTypeA
और EntityTypeB
उदाहरण भी हटाए जाने चाहिए। मैंने EntityTypeA
या EntityTypeB
को अपने माता-पिता को हटाने के बिना कभी भी हटा नहीं दिया।
मेरी समस्या यह है कि ईएफ स्पष्ट रूप से DELETE
स्टेटमेंट EntityTypeA
के लिए बताता है, जिससे मेरा एप्लिकेशन क्रैश हो जाता है।
यह वही अपने मॉडल की तरह लग रही है:
संबंधों निम्नलिखित गैर-डिफ़ॉल्ट config है:
MainEntity -> EntityTypeA OnDelete: Cascade
MainEntity -> EntityTypeB OnDelete: Cascade
संबंधEntityTypeA -> EntityTypeB
OnDelete: None
डाटाबेस सामग्री है
INSERT INTO MainEntities (Name) values ('Test')
insert into EntityTypeA (MainEntityID) VALUES (1)
insert into EntityTypeB (MainEntityID, EntityTypeAId) VALUES (1, 1)
insert into EntityTypeB (MainEntityID, EntityTypeAId) VALUES (1, 1)
मेरे कोड:
class Program
{
static void Main(string[] args)
{
var context = new Model1Container();
var mainEntity = context.MainEntities.Include("EntityTypeA").SingleOrDefault();
context.DeleteObject(mainEntity);
context.SaveChanges();
}
}
क्या
होता है जब मैं SaveChanges, इकाई की रूपरेखा फोन कार्यान्वित डेटाबेस में निम्नलिखित:
exec sp_executesql N'delete [dbo].[EntityTypeA]
where ([Id] = @0)',N'@0 int',@0=1
यह एक विदेशी कुंजी उल्लंघन का कारण बनता है क्योंकि वहाँ EntityTypeB की मेज संदर्भित EntityTypeA मामलों में आइटम हैं।
प्रश्न
क्यों इकाई की रूपरेखा मुद्दा एक स्पष्ट EntityTypeA के उदाहरण के लिए हटाना है, भले ही मैं इकाई की रूपरेखा व्यापक हटाता उपयोग करने के लिए कॉन्फ़िगर कर दिया है? अगर मैं शामिल ("EntityTypeA") को हटा देता हूं तो यह फिर से काम करना शुरू कर देता है।
छवि (अपने मॉडल की) है आपके उत्तर के लिए अनुपलब्ध – flipchart