के माध्यम से क्रमबद्ध नहीं किया जा सकता है मान लें कि मेरे पास अभिभावक, बाल संबंध वर्ग और मैपिंग है। मैं डेटाबेस से ऑब्जेक्ट को पढ़ने के लिए NHibernate का उपयोग कर रहा हूं, और ऑब्जेक्ट को तार में ऑब्जेक्ट भेजने के लिए डब्ल्यूसीएफ का उपयोग करना चाहता हूं।आलसी लोडिंग बंद करें या NHibernate में किसी संपत्ति को लोड करना छोड़ें? प्रॉक्सी को डब्ल्यूसीएफ
लक्ष्य
- पैरेंट ऑब्जेक्ट पढ़ने के लिए, मैं चुनिंदा, विभिन्न निष्पादन पथ पर, तय करने के लिए जब मैं बच्चा वस्तु लोड करने के लिए चाहते हो जाएगा चाहते हैं। क्योंकि मैं जो कुछ चाहिए उससे ज्यादा पढ़ना नहीं चाहता हूं।
- वे आंशिक रूप से लोड ऑब्जेक्ट डब्ल्यूसीएफ के माध्यम से भेजने में सक्षम होना चाहिए। जब मेरा मतलब है कि मैं इसे लोड नहीं करता हूं, तो कोई भी पक्ष ऐसी संपत्ति तक नहीं पहुंच पाएगा।
समस्या
- के रूप में उन संपत्ति
[DataContract]
के रूप में चिह्नित किया गया है इस तरह के आंशिक रूप से भरी हुई वस्तु, WCF के माध्यम से भेजा जा रहा है, यह के रूप में संपत्ति असली नाम से जाना जाता लिखने के बजाय आलसी लोड प्रॉक्सी है धारावाहिक नहीं किया जा सकता।
क्या मैं संग्रह करने के लिए चाहते हैं, या समाधान है कि मैं के
lazy=false
याlazy=true
काम नहीं करता है सोच सकते हैं। पूर्व उत्सुकता से सभी रिश्तों को लाएगा, बाद में प्रॉक्सी बनायेगा। लेकिन मुझे इसके बजाय कुछ भी नहीं चाहिए -null
सबसे अच्छा होगा।- मुझे आलसी लोड की आवश्यकता नहीं है। मुझे उन संदर्भों के लिए
null
प्राप्त करने की उम्मीद है जो मैं नहीं लेना चाहता हूं। एक शून्य, लेकिन सिर्फ एक प्रॉक्सी नहीं। यह डब्ल्यूसीएफ को खुश कर देगा, और आलसी लोड प्रॉक्सी बनाने के लिए कम समय बर्बाद करेगा।
क्या मुझे एक नल प्रॉक्सी फैक्ट्री मिल सकती है?
-OR- - या उन संपत्तियों को अनदेखा करने वाली डब्ल्यूसीएफ बनाना जो असली के बजाय प्रॉक्सी है। मैंने the IDataContractSurrogate solution की कोशिश की, लेकिन केवल माता-पिता को
GetObjectToSerialize
पर पास किया गया है, मैं कभी भीGetObjectToSerialize
के माध्यम से पारित प्रॉक्सी का निरीक्षण नहीं करता, जिससे इसे अन-प्रॉक्सी करने का कोई मौका नहीं मिलता है।
संपादित
टिप्पणियां पढ़ने इंटरनेट पर, अधिक सर्फिंग के बाद ...
मुझे ऐसा लगता है कि डीटीओ सर्वर साइड करने के लिए गणना का प्रमुख हिस्सा बदलाव होगा। लेकिन जिस परियोजना के लिए मैं काम कर रहा हूं, 50% ग्राहक क्लाइंट से "स्मार्ट" है और सर्वर प्रमाणीकरण और सत्यापन के साथ डेटा स्टोर की तरह है। हालांकि मैं मानता हूं कि सर्वर बिल्कुल गूंगा नहीं है - मुझे यह तय करना होगा कि अतिरिक्त संदर्भ पहले से कब प्राप्त करें, और डीटीओ इसे बहुत स्पष्ट बना देगा।
शायद मुझे दर्द होना चाहिए। मुझे पहले http://automapper.codeplex.com/ पता नहीं था, इससे मुझे दर्द लेने के लिए थोड़ा और प्रेरित किया जाता है।
दूसरी ओर, मुझे http://trentacular.com/2009/08/how-to-use-nhibernate-lazy-initializing-proxies-with-web-services-or-wcf/ मिला, जो IDataContractSurrogate.GetObjectToSerialize
के साथ काम कर रहा है।
तार के माध्यम से इकाइयों को न भेजें। डीटीओ का प्रयोग करें, तो आपको आलसी लोड प्रॉक्सी –
http://stackoverflow.com/questions/577201/returning-nhibernate-mapping-classes-from-wcf-services http://stackoverflow.com/questions के साथ कभी भी समस्या नहीं होगी/616314/हैं-वहां-कोई-गॉथस-जब-उपयोग-कास्ट-एक्टिवॉर्ड-निबर्ननेट-साथ-डब्ल्यूसीएफ http://stackoverflow.com/questions/2312563/nhibernate-lazy-initialized-collection-on-wcf-wire http : //stackoverflow.com/questions/1681538/nhibernate-and-wcf-serializationunidirectional –
automapper के बारे में नहीं पता था। शायद मुझे डीटीओ के साथ जाना चाहिए। – HelloSam