12

मैं एक अटैचमेंट ऑब्जेक्ट मॉडल करने के लिए ईएफ 4 एसटीई का उपयोग कर रहा हूं। अनुलग्नक में एक नाम, विवरण, तिथि, और सबसे महत्वपूर्ण डेटा (byte[]) शामिल है। लोडिंग को अनुकूलित करने के लिए, मैं डेटा प्रॉपर्टी को तब तक पुनर्प्राप्त नहीं करना चाहता जब तक कि यह बिल्कुल जरूरी न हो, यानी जब उपयोगकर्ता क्लाइंट से Download पर क्लिक करता है।इकाई फ्रेमवर्क स्प्लिट टेबल हटाएं

इस दृष्टिकोण का पालन करने के प्रयास में, मैंने here वर्णित तालिका-विभाजन तकनीक का उपयोग किया। मैंने अटैचमेंटसंलग्नक (नाम, विवरण, दिनांक) और अटैचमेंटडाटा (डेटा) को विभाजित किया। यह मेरे ईएफ मॉडल में 1 से 1 रिश्ते है। अटैचमेंटडाटा (यानी attachment.AttachmentData == null) के बिना अटैचमेंट को हटाने का प्रयास करने तक मैं सबकुछ बढ़िया काम करता हूं। मुझे निम्नलिखित अपवाद मिलता है:

अमान्य डेटा का सामना करना पड़ा। एक आवश्यक संबंध गुम है। बाधा उल्लंघन के स्रोत को निर्धारित करने के लिए राज्य एंटर्री की जांच करें।

मैं एक similar post देखा, लेकिन मैं इसे STE की और ApplyChanges विस्तार विधि के साथ काम करने के लिए नहीं कर पा रहे।

अभी मेरा डेटा एक्सेस कोड सरल है: मैं संदर्भ ApplyChanges() पर SaveChanges() पर कॉल करता हूं।

मैंने एसक्यूएल फ़ंक्शन को सरल हटाने की कोशिश की है और इसे दोनों इकाइयों में मैप किया है और वास्तव में काम किया है; हालांकि यह डालने तोड़ दिया। मैं दोनों इकाइयों के लिए सभी गुणों के लिए एक सम्मिलित समारोह मैप करने के लिए प्रतीत नहीं कर सकता।

कुछ अन्य विकल्पों पर कोई विचार मैं कोशिश कर सकता हूं? अनुलग्नक और अनुलग्नक डेटा के बीच संबंध वैकल्पिक हो सकता है? जब मैं इसे 1 से 0+ बना देता हूं, तो मुझे एक मैपिंग त्रुटि मिलती है जो कहती है कि Their primary keys may collide

किसी भी सुझाव के लिए खोलें।

धन्यवाद!

उत्तर

6

समाधान से जुड़ा हुआ सवाल के समान है लेकिन आप STES की विशिष्ट सुविधा का उपयोग करना चाहिए - 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

धन्यवाद प्रतिक्रिया के लिए एक गुच्छा! बहुत अच्छा काम करता है! –

+0

यह मुझे गहराई से परेशान करता है: क्यों ईएफ इसे समझ नहीं सकता है, क्योंकि इकाइयों को एक ही टेबल में संग्रहीत किया जाता है, उनमें से एक को हटाने से दूसरे को भी हटा दिया जाएगा? आपको इसे लोड करने की आवश्यकता क्यों है? –

+1

@FyodorSoikin: मुझे लगता है क्योंकि किसी ने अभी तक उस सुविधा को लागू नहीं किया है। –

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