2009-05-01 13 views
5

मैं एक 'UnassignedDepartment' के बजाय दे कर्मचारियों को एक अशक्त विभाग है की वस्तु करना चाहते हैं:NHibernate मानचित्रण अशक्त वस्तु/विशेष प्रकरण पैटर्न

public class UnassignedDepartment : Department 
{ 
    public UnassignedDepartment() : base("not yet assigned") { 
     Id = -99; <-- just some Id that can be held constant, not be generated.. 
    } 
} 

इस विभाग कक्षा में एक स्थिर सुविधा क्षेत्र से पहुँचा जा सकता है :

public class Department : Entity 
{ 
    public static readonly Department UNASSIGNED = new UnassignedDepartment(); 

    ....  
} 

मैं आधार इकाई के रूप में एस # rpArch के ढांचे का उपयोग कर रहा हूँ, FNH automapping के मिश्रण के साथ, & सम्मेलनों ओवरराइड करता है। एक दृढ़ दृष्टिकोण से, यह 'विशेष' आईडी के साथ अन्य विभागों के साथ रखने के लिए तार्किक लगता है, लेकिन मुझे नहीं पता कि यह ठीक से कैसे किया जाए। कृपया मुझे ज्ञान दो!

Thx, Berryl

उत्तर

2

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

private Department _department; // map this in FNH 

public Department Department 
{ 
    get { return _department ?? _department.UNASSIGNED; } 
} 
+0

अधिक स्पष्ट नहीं होने के लिए खेद है। ऑब्जेक्ट मॉडल में मुझे आवश्यक सभी तर्क हैं और ठीक काम करता है। यह दृढ़ता (एनएचबीरनेट/एफएनएच) मानचित्रण है जिसे मैं हल करने की कोशिश कर रहा हूं, जिसने मुझे एक विचार दिया। इसे विरासत मुद्दे के रूप में सोचने के बजाय, मुझे लगता है कि मुझे ऑब्जेक्ट विरासत को फ़्लैट करने और इसे किसी अन्य विभाग के रूप में देखने के लिए उचित रिपोजिटरी का विस्तार करने की आवश्यकता है; एक जिसमें एक विशेष मामला है (डुह)। मैं कल कोशिश करूँगा और परिणाम पोस्ट करूंगा या एक अलग प्रश्न पूछूंगा :-)। – Berryl

+0

फाउलर रिफैक्टरिंग से पैराफ्रेशेड, इलेक्ट्रिक यूटिलिटी कंपनी के लिए एक अज्ञात आवासीय ग्राहक (शायद वे घर छोड़कर, जो भी छोड़ दिया गया) से निपटने के लिए एक विकल्प है, ग्राहक संपत्ति सचमुच शून्य होनी चाहिए। लेकिन फिर जब आप ग्राहक का आह्वान करते हैं तो आपको शून्य संदर्भों की जांच करनी पड़ती है। गणना करें, इसलिए आप ऑब्जेक्ट बनाते हैं जो पॉलिमॉर्फिज्म का उपयोग करने के लिए ग्राहक का उप-वर्ग है और सभी शून्य जांच (शून्य ऑब्जेक्ट) से बचें। बेहतर अभी तक, एक ऐसे उप-वर्ग को बनाएं जो सही पता जानता हो और जब कोई फौजदारी घर लेता है और सामान्य ग्राहक बन जाता है तो लागतें जमा कर सकते हैं। – Berryl

+0

मेरा सवाल यह है कि एनएचबीर्नेट का उपयोग करके डीबी में इसे कैसे मैप करें। एक अवधारणा (मुझे लगता है कि यह वह जगह है जहां जेमी जा रहा था) एनवीआईबी का उपयोग एक प्राइवेट क्षेत्र तक पहुंचने के लिए किया जा सकता है और वास्तव में डीबी में शून्य को स्टोर करता है जबकि ऑब्जेक्ट मॉडल व्यवसाय के रूप में शून्य या मेरे मामले में असाइन किए गए डिपार्टमेंट के रूप में व्यवहार करता है। लेकिन क्या इसका मतलब है कि आप रेफरेंसियल अखंडता खो देते हैं? इसके अलावा यह आपको एक विशेष मामले तक सीमित कर देगा। एकमात्र अन्य विकल्प यह है कि डीबी को कुछ विशेष आईडी (यानी -1) के साथ इस विशेष का इलाज भी करना है, लेकिन फिर आपके पास संपादन को रोकने में समस्याएं हैं। यह प्रेरणा और समस्या है जिसे मैं हल करना चाहता हूं। – Berryl

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