2008-12-20 14 views
5

के साथ एनएचबर्ननेट का उपयोग करके (फ्लुएंट) एनएचबर्ननेट का उपयोग करके एनएचबर्ननेट सीखने की मेरी खोज पर मैं अगले बाधा तक पहुंच गया हूं; मैं स्ट्रक्चर मैप के साथ इसे एकीकृत करने के बारे में कैसे जाना चाहिए?स्ट्रक्चर मैप (या किसी भी आईओसीसी)

हालांकि कोड उदाहरणों का बहुत स्वागत है, मुझे सामान्य प्रक्रिया में अधिक रुचि है।

मैं कर रहा था पर क्या योजना बना रहा था ...

  • उपयोग धाराप्रवाह NHibernate NHibs विन्यास में उपयोग के लिए मेरी कक्षा मैपिंग बनाने के लिए
  • लागू ISession और ISessionFactory
  • बूटस्ट्रैप मेरी ISessionFactory का एक उदाहरण में के रूप में एक सिंगलटन
  • रजिस्टर StructureMap साथ ISession StructureMap, साथ प्रति-HttpRequest कैशिंग

हालांकि, मुझे HttpRequest के अंत में मेरे सत्र उदाहरण पर विभिन्न साफ-सफाई विधियों को कॉल करने की आवश्यकता नहीं है (क्योंकि यह उसके जीवन का अंत है)?

तो मैं निपटान() में साफ-अप करते हैं, मेरे लिए यह की देखभाल structuremap होगा?

यदि नहीं, तो मुझे क्या करना चाहिए?

धन्यवाद

एंड्रयू

+1

आपके दूसरे बिंदु में आप ISessionFactory और ISession को लागू करने का उल्लेख करते हैं। आप इन्हें स्वयं लागू नहीं करना चाहते हैं। आप किसी प्रकार के "प्रबंधक" को लागू करना चाहते हैं जो आपको ISessionFactory तक पहुंच और खुले/बंद सत्रों तक पहुंच प्रदान कर सकता है। –

+0

क्या वे पहले से ही एनएचआईबी में लागू किए गए हैं? वे किस नामस्थान में हैं? –

+2

वे NHibernate.Impl नामस्थान में हैं, लेकिन आप उन्हें Configuration.BuildSessionFactory() और ISessionFactory.OpenSession() के माध्यम से एक्सेस करते हैं। –

उत्तर

4

मैं अपने वर्तमान परियोजनाओं के 3 में धाराप्रवाह-nhibernate (और राष्ट्रीय राजमार्ग सत्यापनकर्ता) के साथ StructureMap का उपयोग करें। उनमें से 2 एएसपी एमवीसी ऐप्स हैं और तीसरा एक डब्ल्यूसीएफ वेब सेवा है।

आपका सामान्य रणनीति के बारे में सही लगता है (सिवाय आप अपने स्वयं के सत्र या SessionFactory बनाने नहीं किया जाएगा के रूप में किया गया था पहले से ही टिप्पणी में कहा)। जानकारी के लिए, यहां से मेरी विन्यास कोड रोड़ा:

http://brendanjerwin.github.com/development/dotnet/2009/03/11/using-nhibernate-validator-with-fluent-nhibernate.html

पोस्ट वास्तव में है राष्ट्रीय राजमार्ग सत्यापनकर्ता और सुविज्ञ-NHibernate एकीकृत करने के बारे लेकिन आप "बोनस में देख सकते हैं कि कैसे मैं सत्र कारखाने और StructureMap साथ ISession रजिस्टर "पद के खंड।

उत्तर: साफ अप: आप की कोशिश करनी चाहिए और हमेशा एक सौदे के भीतर काम करते हैं और या तो प्रतिबद्ध या काम की अपनी यूनिट के अंत में रोल वापस लेन-देन। एनएच केवल एसक्यूएल कनेक्शन का उपयोग करता है जब इसकी आवश्यकता होती है और आपके लिए उस सीमित संसाधन की सफाई का ख्याल रखेगी। सामान्य कचरा संग्रह आपके सत्रों का ख्याल रखेगा।

सत्र फैक्ट्री एक बहुत ही महंगी वस्तु है जिसे आप केवल एक बार शुरू करना चाहते हैं और अपने ऐप के जीवन के लिए चारों ओर रखना चाहते हैं।

+1

उपरोक्त लिंक टूटा हुआ है, यह होना चाहिए http://brendanjerwin.github.com/development/dotnet/2009/03/11/using-nhibernate-validator-with-fluent-nhibernate.html –

+0

धन्यवाद, मैंने लिंक तय किया जवाब में – brendanjerwin

+0

यह फिर से टूट गया है –

0

मैं संरचना मैप का उपयोग नहीं किया है, लेकिन मैं अभी भी Maybee सही दिशा में मार्गदर्शन कर सकते हैं। Fluent nHibernate एचबीएम फ़ाइलों पर बहुत अच्छी पसंद है।

http अनुरोध के रूप में, आप सुनिश्चित करें कि आप सत्र बंद जब http अनुरोध समाप्त होता है की जरूरत नहीं है। यदि आप नहीं करते हैं तो आप nHibernate सत्र को लीक कर देंगे। मुझे यकीन नहीं है कि क्या संरचना मानचित्र आपके लिए इसे संभालेगा, मैंने जो किया है, मेरे पास एक http मॉड्यूल है जो सत्र को बंद करता है। नोट करने के लिए कि हालांकि मुझे काटो,

एक बात यह है कि क्या आप वाकई करने के लिए आप एक सौदे में अपने सभी डेटा का उपयोग लपेट और यह सुनिश्चित करना nHibernate वास्तव में अपने परिवर्तन करता है कर देगा है। यदि आप इसे अपने सत्र के हिस्से के रूप में करते हैं, तो आप त्रुटियों को संभालने का मौका चूक सकते हैं। मैं यह काम करने के लिए उत्सुक हूं कि आप इस कार्यप्रणाली को प्राप्त करने के लिए क्या कर रहे हैं।

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