डिबगिंग, फ़िडलिंग और परीक्षण के एक बड़े सौदे के बाद मैंने आखिरकार इसे समझ लिया। मेरा मुद्दा, यह निकला, मोंगो के लिए लेखन नहीं था, यह एक बार लिखे जाने के बाद मोंगो के बाहर पढ़ने में था।
साइटकोर प्रलेखन ऐसा लगता है (हमेशा की तरह) इस के काम करने के एक मौलिक हिस्से को पूरी तरह से याद करने के लिए। लगभग एक तिहाई दस्तावेज़ों के नीचे बताए गए तरीके :
ठीक है, यह बहुत भ्रामक है। यह क्या है EnsureAttribute
ऐसा प्रतीत होता है कि मोंगो से वर्तमान वर्ग में पहलू के लिए डेटा लोड किया गया है। अगर आप हर प्रॉपर्टी के लिए ऐसा नहीं करते हैं आपके पहलू में तो यह mongoDb से मान निर्धारित नहीं करता है! यह मेरी गलती थी, मैंने कक्षा में हर संपत्ति को "सुनिश्चित" नहीं किया था।
तो क्या हो रहा था,
- मैंने अपना डेटा पहलू में रखा है
- पहलू डेटा सत्र में बना रहता है और मैं देख सकता हूं, इसे एक्सेस कर सकता हूं, इसे बदल सकता हूं, आदि।
- डेटा को अंततः मोंगो में प्रवाहित किया जाता है (xDb यदि आवश्यक हो तो)
- उपयोगकर्ता लौटता है, सिस्टम उन्हें सही ढंग से पहचानता है (उपयोगकर्ता की पहचान करने की कोई आवश्यकता नहीं है ,
SC_ANALYTICS_GLOBAL_COOKIE
यह आपके लिए करता है) - लेकिन यह डेटा लोड नहीं करता है (मोंगो से बाहर और सत्र में वापस) जब तक कि आप इसे "सुनिश्चित" नहीं करते।
तो EnsureAttribute
"एक मान प्रकार घोषित नहीं करता" (यह मेरी राय में बिल्कुल गलत है) यह डेटा को मोंगोडब से और वर्तमान Session
में लोड करता है .