2009-01-16 12 views
11

यहां एंटीटी फ्रेमवर्क पर हैंडल प्राप्त करने का प्रयास कर रहा है और मैं कुछ गति टक्कर मार रहा हूं ... मेरे पास एक Get() विधि है जो ठीक काम करती है और है परीक्षण किया गया, लेकिन मेरे हटाएँ विधि काम नहीं कर रहा:त्रुटि: ऑब्जेक्ट को हटाया नहीं जा सकता क्योंकि यह ऑब्जेक्टस्टेट मैनेजर

public static void Delete(string name) 
    { 
     J1Entities db = new J1Entities(); 
     db.DeleteObject(Get(name)); 
     db.SaveChanges(); 
    } 

लेकिन मैं निम्नलिखित त्रुटि मिलती है: त्रुटि: क्योंकि यह ObjectStateManager में नहीं मिला था वस्तु हटाया नहीं जा सकता।

मैंने डीबगर चलाया, और DeleteObject के अंदर ऑब्जेक्ट सही है ... मुझे क्या याद आ रही है? धन्यवाद।

उत्तर

16

प्रत्येक ईएफ ऑब्जेक्ट मैनेजर (एक बेहतर शब्द की इच्छा के लिए) से कसकर जुड़ा हुआ है जिसने इसे बनाया है। या जिस पर यह जुड़ा हुआ है। चूंकि आप db को अपने Get विधि पर पास नहीं करते हैं, इसलिए मुझे लगता है कि Get या तो इसका अपना J1Entities उपयोग किया गया है, या ऑब्जेक्ट स्टैंडअलोन (शायद deserialized) बनाया गया है।

इसे हटाने के लिए, इसे इसके बारे में पहले पता होना चाहिए। इसका अर्थ को प्रबंधक के लिए एक ऑब्जेक्ट संलग्न कर सकता है - लेकिन इस मामले में, यह dbGet में पास करने के लिए एक आसान विकल्प जैसा लगता है, ताकि Get उसी संदर्भ में किया जा सके (क्योंकि db स्वचालित रूप से ऑब्जेक्ट संलग्न करेगा यह स्वयं बनाता है)।

+0

बिल्कुल सही ... मुझे लगा कि यह कुछ आसान था ... :) – naspinski

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

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