मेरे पास एक SQLite डीबी है जो स्थापित है ताकि जब मैं किसी व्यक्ति को हटा दूं तो डिलीट कैस्केड हो। यह ठीक काम करता है जब मैं मैन्युअल रूप से एक व्यक्ति को हटाता हूं (पर्सिड आईडी का संदर्भ देने वाले सभी रिकॉर्ड हटा दिए जाते हैं)। लेकिन जब मैं इकाई की रूपरेखा व्यक्ति को नष्ट करने के लिए उपयोग मैं कोई त्रुटि मिलती है:एंटिटी फ्रेमवर्क और सिस्टम का उपयोग कर कैस्केड डिलीट के साथ समस्या। डेटा। SQLite
System.InvalidOperationException: The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
मुझे समझ नहीं आता क्यों यह हो रहा है। मेरा ट्रिगर उस ऑब्जेक्ट को हटाने से पहले सभी संबंधित ऑब्जेक्ट्स को साफ़ करने के लिए सेट है जिसे हटाने के लिए कहा गया था।
जब मैं मॉडल संपादक में जाता हूं और रिश्ते के गुणों की जांच करता हूं तो यह ऑनडेले संपत्ति के लिए कोई कार्रवाई नहीं दिखाता है। डीबी से खींचकर यह सेट सही ढंग से क्यों नहीं है? यदि मैं इस मूल्य को कैस्केड में बदलता हूं तो सब ठीक से काम करता है, लेकिन मैं इस मैन्युअल परिवर्तन पर भरोसा नहीं करता क्योंकि अगर मैं डीबी से अपना मॉडल रीफ्रेश करता हूं और यह उसे खो देता है।
यहां मेरी टेबल के लिए रिलायंस एसक्यूएल है।
CREATE TABLE [SomeTable]
(
[SomeTableID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[PersonID] INTEGER NOT NULL REFERENCES [Person](PersonID) ON DELETE CASCADE
)
CREATE TABLE [Person]
(
[PersonID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT
)
यदि आपको एंड 1 या एंड 2 अपडेट करना चाहिए तो क्या काम करने का कोई तरीका है? या यह सिर्फ परीक्षण और त्रुटि है? –
यह आपके डेटाबेस के मॉडल के तरीके पर निर्भर करता है।यदि आपके पास एक से अधिक रिश्तों हैं, तो 'एक' अंत को 'कैस्केड' – Omar