6

यहाँ परिदृश्य है, मैं एक वेबसाइट है, जो एक एकल HTTP अनुरोध (HTTP POST) में, मैं निम्न कार्य करने की जरूरत है:इकाई फ्रेमवर्क 4.1 - ग्राफ का उपयोग करने के बजाय डीएफ पर जाने के लिए "बल" कैसे करें?

  1. ले लो एक वस्तु (मान लें कि "टैग")
  2. सहेजें कुछ अन्य ऑब्जेक्ट (मान लें "प्रश्न")
  3. "टैग" की एक नई प्रति प्राप्त करें।
  4. किसी अन्य पृष्ठ पर रीडायरेक्ट करें, जिसके लिए "टैग" की ताजा प्रतिलिपि की आवश्यकता है।

दृश्यों के पीछे, 2) डेटाबेस-साइड ट्रिगर शामिल हैं जो "टैग" पर डेटा को प्रभावित करता है।

तो जब मैं करना 3), एफई चरण 1 से वस्तु की एक ही प्रति खींच रहा है), यह है, क्योंकि ग्राफ/आंतरिक स्मृति में (उदाहरण के लिए एक ही कनेक्शन/संदर्भ)

मैं एक "फ्रेश" की जरूरत है वस्तु की प्रति।

अतीत में, मैंने Detach का उपयोग किया है, तो मैं डीएफ से प्राप्त ईएफ क्वेरी और नवीनतम ऑब्जेक्ट करता हूं।

लेकिन मेरे पास प्रति ऑब्जेक्ट तक पहुंच नहीं है (मेरे पास एक डीटीओ है, जो मेरे भंडार से लौट रहा है), इसलिए मेरे पास Detach विधि को पास करने के लिए कुछ भी नहीं है।

वहाँ कहने के लिए कोई तरीका है:

var fresh = db.Tags.Find(1, ignoreGraph: true) 

या कोई और विकल्प नहीं है?

के रूप में उल्लेख किया है, मैं इकाई की रूपरेखा 4.1 पर हूँ, सी # 4 (और ASP.NET MVC 3)

एकमात्र समाधान मैं अभी देख सकते हैं जो तब, अगले पृष्ठ पर एक क्वेरी स्ट्रिंग पैरामीटर पारित करने के लिए है ताजा प्रतिलिपि पकड़ता है (क्योंकि यह एक नया संदर्भ है, नया ग्राफ, आदि)।

+0

के संभावित डुप्लिकेट http://stackoverflow.com/questions/7639219/reload-object-in-an-entity -फ्रेमवर्क-सामग्री-अपडेट-मूल्य-मूल्य/7639578 –

+0

@ नाथन - संभवतः, लेकिन उत्तर में मदद नहीं मिलेगी, क्योंकि मेरे पास 'छतरी' ऑब्जेक्ट (या 'टैग' ऑब्जेक्ट) तक पहुंच नहीं है 'संदर्भ। रीफ्रेश करें (रीफ्रेश मोड। स्टोअरविन्स, छतरी)' कॉल। – RPM1984

+0

और यह भी ईएफ 4 है, ईएफ 4.1 नहीं। ऐसा लगता है कि "ताज़ा करें" विधि डीबीकॉन्टेक्स्ट से हटा दी गई है। – RPM1984

उत्तर

13

मिले मेरा उत्तर, मुझे लगता है:

Context.Entry<T>(entity).Reload() 

अब कोशिश कर रहा है ...

+0

मेरे पास 'इकाई' तक पहुंच नहीं है, केवल 'dtoEntity'। – RPM1984

+1

यदि आप इकाई को रीफ्रेश करना चाहते हैं तो आपको पता होना चाहिए कि कौन सी इकाई रीफ्रेश करना है, है ना? यदि आप इकाई की कुंजी जानते हैं तो भी आप इसे ट्रैक ट्रैकर में पा सकते हैं और उसके बाद इसे पुनः लोड कर सकते हैं। –

+0

@ लादिस्लाव, मेरे पास एक अद्वितीय इंडेक्स है, न कि इकाई। उदा। मैं 'ढूंढता हूं()। सिंगलऑर्डफॉल्ट (x => x.UniqueUri == someUri)'। – RPM1984

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