2009-03-03 9 views
5

में एनम टेबल हम एनएचबर्ननेट का उपयोग कर रहे हैं, और एनम जैसी जानकारी संग्रहीत करने के लिए हमारे पास सामान्य पैटर्न में से एक है enum के लिए अलग-अलग तालिकाओं को परिभाषित करना, और केवल मुख्य इकाई/टेबल जो enum का उपयोग करता है। एक साधारण उदाहरण: एसएमएस, एमएमएस, Psms, आदिहाइबरनेट/एनएचबीरनेट

इसे इस तरह अलग तालिकाओं में enum मूल्यों डालने लायक है:

Message 
------- 
ID (bigint PK) 
MessageTypeID (bigint FK) 
Body (varchar) 

MessageType 
----------- 
ID (bigint PK) 
Value (varchar) 

MessageType मेज की तरह enum मूल्यों की एक छोटी संख्या में शामिल है? मुझे लगता है कि enum के समर्थक यह है कि आप इसे भविष्य में अधिक आसानी से बढ़ा सकते हैं और यह अधिक सामान्य है, लेकिन यह है कि आपको संदेश भेजने पर हर बार शामिल होना होता है। क्या कोई ब्रेकिंग पॉइंट है जहां आप एक दूसरे को चुनते हैं?

उत्तर

10

enums का उपयोग करने से तात्पर्य है कि आप किसी अन्य तालिका का उपयोग न करें जैसा कि आप अभी कर रहे हैं। यह भी तेज़ है जैसा आपने कहा और इतना आसान है।

दोनों मामलों में आप अधिक विकल्प जोड़ सकते हैं, लेकिन सवाल यह है कि: यदि आप तालिका में कोई अन्य आइटम जोड़ते हैं तो आपको इस सुविधा को जोड़ने के लिए एप्लिकेशन को पुन: संकलित करने की आवश्यकता होगी?

मेरा मतलब है, यदि आपका एप्लिकेशन डिज़ाइन युग्मित है और एक नए संदेश प्रकार का समर्थन करने के लिए आपको पुन: संकलित करने की आवश्यकता है (शायद क्योंकि आपको एसएमएस कार्यान्वयन को शामिल करने की आवश्यकता है), यह अलग टेबल होने के लायक नहीं है, और आपको इसका उपयोग करना चाहिए enums

दूसरी ओर, यदि या तो अपने इकाई तर्क का अभाव है (जैसे कि एक देश, या स्टेट्स तालिका), या आपके आवेदन recompile यदि आप किसी अन्य तालिका का उपयोग करना चाहिए बिना नया संदेश प्रकार में प्लग कर सकते हैं। इसके लिए आपको कुछ इस तरह अपनी तालिका को बदल सकता है:

MessageType 
----------- 
ID (bigint PK) 
Value (varchar) 
ImplementationType (varchar) (ie: Xyz.SMSSender, Xyz) 

या आप एक अलग विन्यास फाइल है, जहां आप इंजेक्शन निर्भरता को अनुकूलित कर सकते हो सकता था।

2

मैं आपके संदेश टाइप तालिका में मिलान आईडी के साथ आपके कोड में एक enum बनाउंगा। फिर अपनी कक्षाओं पर बस इसका उपयोग करें और nHibernate इसे ठीक से मैप करने में सक्षम होना चाहिए।

मैं enum तालिकाओं से भटक रहा हूं, खासकर जब उस डेटा को प्रबंधित डेटा की आवश्यकता नहीं होती है। क्या आप अधिक से अधिक संदेश टाइप को जोड़ने जा रहे हैं?

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

  • कोई संबंधित समस्या नहीं^_^