2010-05-20 10 views
17

मेरे पास कुछ नाज़ुक टेबल हैं जो बहुत ही नाजुक तालिकाओं से पढ़ते हैं, यही कारण है कि मैं उन्हें एनएचबेर्नेट द्वारा "रीडऑनली" के रूप में उपयोग करना चाहता हूं। स्थापित करना। प्रत्येक फ़ील्ड मैप पर केवल पढ़ने के लिए() वास्तव में मैला है, और मुझे यकीन नहीं है कि मुझे विश्वास है। मैं पूरी तरह से पढ़ा जाने वाला वर्ग कैसे स्थापित करूं, क्योंकि मैं पारंपरिक एक्सएमएल मैपिंग के साथ आसानी से कर सकता हूं?फ्लुएंट एनएचबेर्नेट: पूरी कक्षा को केवल पढ़ने के लिए कैसे मानचित्र करें?

संपादित: जवाब काम करता है। मुझे उम्मीद है कि अगर मैं एक ReadOnly() ऑब्जेक्ट को सहेजने की कोशिश करता हूं, तो यह अपवाद फेंकने की उम्मीद करता है, लेकिन यह चुपचाप ऐसा करता है।

धन्यवाद।

class EntityMap : ClassMap<Entity> 
{ 
    public EntityMap() 
    { 
     ReadOnly(); 

     // Mappings 
    } 
} 
+0

कोई कामकाज? – kaptan

+0

@ कप्तान: मैं उत्तर पर मेरी टिप्पणी संपादित करूंगा। यह वास्तव में कारगर है। मैंने बस एक अपवाद फेंकने की उम्मीद की, लेकिन यह चुपचाप किसी भी बदलाव को अनदेखा करता है। – rebelliard

उत्तर

32

धाराप्रवाह NHibernate के साथ, यह के रूप में सरल है। इस प्रॉपर्टी का उपयोग करके यह सुनिश्चित हो जाता है कि आपके द्वारा पुनर्प्राप्त ऑब्जेक्ट केवल पढ़ने के लिए हैं, इसलिए आप उन्हें अपडेट नहीं कर सकते हैं। हालांकि, यह नए रिकॉर्ड बनाने या डेटाबेस में मौजूदा रिकॉर्ड्स को हटाने से नहीं रोकता है!

11

ReadOnly() संपत्ति वास्तव में की तरह आप उम्मीद करेंगे काम नहीं करता:

+1

हम्म, यह नहीं देखा था, जो पागल है! मुझे लगता है कि पठनीय और संरक्षित कन्स्ट्रक्टर का मिश्रण काम करेगा। – rebelliard

+1

मुझे लगता है कि "अपरिवर्तनीय" इसके लिए एक बेहतर नाम है। –

+0

'ReadOnly', सुविज्ञ नामकरण है ऐसा लगता है कि वे जो समझा यह मूल NHibernate नामकरण की तुलना में बेहतर, [' परिवर्तनशील = "false" '] (http://nhibernate.info/doc/nhibernate-reference/mapping.html# मानचित्रण-घोषणा वर्ग)। हो सकता है कि उनके संदर्भ में, जहां उन्होंने 'insertOnly'on गुणों को' insert = "false" update = "false" के लिए शॉर्टेंड के रूप में परिभाषित किया है, लेकिन मेरे विचार में यह वर्ग और संग्रह उत्परिवर्तन के लिए एक दुर्भाग्यपूर्ण नामकरण है। –

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