2010-12-07 4 views
8

लोड सफलतापूर्वक उत्सुक नहीं हो सकता है मैं एनएच 3.0 और एफएनएच 1.1 का उपयोग एनएच 3 के साथ पुनः संकलित कर रहा हूं।NHibernate:

मेरे पास एक उपयोगकर्ता मॉडल है जहां मैं इसे लोड करते समय हमेशा अपनी प्रोफ़ाइल पुनर्प्राप्त करना चाहता हूं। मैं एनएच 3 से लिनक प्रदाता का उपयोग करता हूं लेकिन इसकी फीच विधि का उपयोग नहीं कर सकता (मेरे भंडार की वजह से जो एनएचबेर्नेट को छुपाता है और एक आईक्विबल योग्य देता है और तथ्य यह है कि ToPagedList को क्वेरी पर बुलाया जाता है इसलिए मुझे क्वेरी की अंतिम कॉल के रूप में लाने के लिए रोकना)।

UserMap में मैं सेट:

HasOne(x => x.Profile) 
    .Not.LazyLoad() 
    .Cascade.All(); 

लेकिन बंद करने के लिए LazyLoad स्थापित करने में मदद नहीं करता। मैं भी fetch मोड के साथ खेला।

मेरी उम्मीद यह है कि यदि मैं इस मैपिंग को परिभाषित करता हूं, तो मुझे लिंकक को यह भी कहना नहीं चाहिए कि मैं चाहता हूं कि उपयोगकर्ता इकाई से अनुरोध होने पर प्रोफ़ाइल प्राप्त की जाए। लिंक को मैपिंग का सम्मान करना चाहिए, नहीं?

+1

हमम ... मैंने सोचा कि 1-से-1 हमेशा उत्सुक हो गया था ... असल में मुझे याद है कि 1-से-1 को आलसी लोड करने में सक्षम नहीं है। क्या एनएच 3 के साथ यह परिवर्तन हुआ? – dotjoe

+0

मेरा संदर्भ एनएच प्रोफाइलर है। मुझे 2 अनुरोध दिखाई देते हैं, उपयोगकर्ता के लिए एक चयन और प्रोफाइल के लिए एक चयन। मुझे स्वीकार करना होगा कि जब मैंने एनएच 2 का उपयोग किया था तो मैंने उस पर ध्यान नहीं दिया था। –

उत्तर

3

मुझे यह समस्या भी है, और दुर्भाग्य से मुझे लगता है कि यह डिज़ाइन द्वारा है। NHibernate 3.0 लिंक प्रदाता कवर के तहत एचक्यूएल का उपयोग करता है, और एचक्यूएल इस संबंध में आपके मैपिंग का सम्मान नहीं करता है। उदाहरण के लिए, यदि आप

session.CreateQuery ("प्रोफ़ाइल से")। सूची() किया

आप होगा केवल सभी प्रोफाइल की एक सूची प्राप्त करने और अपने उपयोगकर्ता कक्षा में शामिल नहीं हैं, भले ही आपके मानचित्रण में बाहरी-शामिल = सत्य है।

आप पुराने NHibernate.Linq प्रदाता है कि शर्तों को पूरा करते API का उपयोग किया है, या सीधे मानदंड एपीआई का उपयोग कर रहे हैं:।

session.CreateCriteria() सूची()

आप मिलेगा उपयोगकर्ताओं के साथ बाहरी रूप से जुड़े सभी प्रोफाइल की एक सूची वापस, जैसे आपकी मैपिंग फ़ाइल ने अनुरोध किया था।

अब मुझे नहीं पता कि एचक्यूएल समर्थित लिनक प्रदाता आपके मैपिंग का सम्मान क्यों नहीं करता है (और अगर कोई इस के आसपास एक रास्ता जानता है, तो कृपया पोस्ट करें), लेकिन मेरा मानना ​​है कि यही कारण है कि आप इस व्यवहार को देख रहे हैं।