2009-02-09 12 views
15

से जुड़ा हुआ है, मेरे पास एक प्रक्रिया है जहां मुझे किसी इकाई ऑब्जेक्ट को सहेजने की आवश्यकता है। समस्या यह है कि मुझे नहीं पता कि यह इकाई मेरे डेटाकॉन्टेक्स्ट से जुड़ी है या नहीं।पता लगाएँ कि क्या डेटा डेटाैकेंटेक्स्ट

try 
{ 
    db.ClientUsers.Attach(clientUser); 
    db.Refresh(RefreshMode.KeepCurrentValues, clientUser); 
} 
catch { } 

db.SubmitChanges(); 

मैं एक इकाई एक संदर्भ के अंतर्गत आता है और यह भी अगर एक इकाई के एक विशिष्ट संदर्भ से जुड़ा हुआ है परीक्षण करने के लिए अगर पता लगाने के लिए एक बेहतर तरीका के लिए देख रहा हूँ: इसे सुलझाने के लिए मैं निम्नलिखित कोड का उपयोग करें।

उत्तर

22

मुझे आश्चर्य है ... GetOriginalEntityState एक गैर-संलग्न ऑब्जेक्ट के लिए वापस क्या करता है? यहां तक ​​कि अगर यह एक अपवाद फेंकता है, यह शायद एक ताज़ा तुलना में तेजी से हो जाएगा ...

(अद्यतन) - एक परीक्षण यह शून्य रिटर्न पता चलता है:

 Customer cust = new Customer(); 
     Customer orig = ctx.Customers.GetOriginalEntityState(cust); 
     Assert.IsNull(orig); 

     cust = new Customer(); 
     ctx.Customers.Attach(cust); 
     orig = ctx.Customers.GetOriginalEntityState(cust); 
     Assert.IsNotNull(orig); 
     Assert.AreNotSame(cust,orig); 

तो शायद GetOriginalEntityState का उपयोग करें और वापस आ अशक्त के लिए जाँच मूल्य ...

+3

यह बहुत अच्छा है! DataContext के लिए एक अच्छा "IsAttached (T)" एक्सटेंशन विधि के लिए बनाता है। – rossisdead

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