के साथ डोमेन मॉडल मैं "डीडीडी के साथ डीडी" दुनिया में शुरू करने की कोशिश कर रहा हूं। मैं अपने ओआरएम उपकरण के रूप में NHibernate का उपयोग करता हूं, इस प्रकार एक पीआई (दृढ़ता अज्ञान) मॉडल विकसित करने की कोशिश करता हूं। हालांकि, मेरी कुछ इकाइयों में (जिन्हें पीओसीओएस के रूप में दर्शाया जा रहा है) मेरे पास मेरे गुणों के सेटर्स में व्यवसाय नियम हैं। उदाहरण के लिए, मेरे पास एक "उपयोगकर्ता" इकाई है जिसमें एक ध्वज है जो इंगित करता है कि यह उपयोगकर्ता अवरुद्ध है या नहीं, जब यह ध्वज सत्य है तो "ब्लॉक डेट" नामक दूसरा फ़ील्ड वर्तमान दिनांक के साथ स्वचालित रूप से भरना होगा। सबकुछ बहुत स्पष्ट और सरल प्रतीत होता है, लेकिन इस समस्या में समस्या उत्पन्न होती है कि मैं उन उपयोगकर्ताओं को पुनर्प्राप्त कर रहा हूं जो डेटाबेस में पहले से ही जारी हैं, भले ही अवरुद्ध उपयोगकर्ताओं को उनके "अवरुद्ध तिथियां" अपडेट को वर्तमान दिनांक में अपडेट किया जाएगा, यह तर्क प्रारंभ में मैंने दूसरे ध्वज "आइसलोडेड" में सोचा था जो इंगित करेगा कि ऑब्जेक्ट एनएचबीरनेट द्वारा हाइड्रेटेड किया जा रहा है और फिर यह तर्क लॉन्च नहीं किया जाएगा, हालांकि यह पीआई की तरह प्रतीत नहीं होता था। इसे सुधारने के बारे में कोई सुझाव?निबर्ननेट डिजाइन समस्या
6
A
उत्तर
4
आप IsBlocked संपत्ति के लिए अपने मानचित्रण में फ़ील्ड एक्सेस रणनीति को परिभाषित कर सकते हैं। असल में, आप संपत्ति के बजाय अंतर्निहित निजी क्षेत्र (_isBlocked) का उपयोग करने के लिए NHibernate से कहेंगे और इसलिए, IsBlocked संपत्ति में आपका सेटटर तर्क निष्पादित नहीं किया जाएगा।
This SO question एक्सेस रणनीतियों पर एक अच्छा जवाब है।
आधिकारिक एनएचबेर्नेट documentation।
Map(x => x.IsBlocked).Access.CamelCaseField(Prefix.Underscore);
4
NHibernate समस्या के लिए Miroslavs समाधान के अलावा, मैं वास्तव में संपत्ति के पीछे तर्क डालने से दूर जाने की सलाह देते हैं:
आप मानचित्रण के लिए धाराप्रवाह NHibernate का उपयोग कर रहे हैं, तो यह आप इसे कैसे परिभाषित कर सकता है सेटर्स, खासकर जब अन्य क्षेत्रों को बदलने की जरूरत है।
public void Block()
{
_isBlocked = true;
_blockedDate = DateTime.Now;
}
क्यों this question के जवाब देखें। इस सिफारिश के लिए
संबंधित मुद्दे
- 1. जेपीए - इकाई डिजाइन समस्या
- 2. निबर्ननेट लिंक
- 3. जेनिक्स और डेटाबेस - एक डिजाइन समस्या
- 4. धाराप्रवाह निबर्ननेट
- 5. फ्लुएंट निबर्ननेट
- 6. फ़्लेंट-निबर्ननेट
- 7. निबर्ननेट (एएसपी.नेट एमवीसी + आईओसी)
- 8. फ्लुएंट निबर्ननेट एनम मैपिंग
- 9. डेटाटाइम धाराप्रवाह निबर्ननेट मैपिंग
- 10. निबर्ननेट/एमवीसी: देखें
- 11. निबर्ननेट एचक्यूएल जहां क्वेरी
- 12. खंड में निबर्ननेट लिंक
- 13. समय और निबर्ननेट
- 14. निबर्ननेट Winform अनुप्रयोग
- 15. निबर्ननेट और एमएस एक्सेस
- 16. निबर्ननेट मानदंड एपीआई
- 17. निबर्ननेट 3 और LINQ
- 18. निबर्ननेट: प्रॉक्सिड क्लास
- 19. निबर्ननेट क्वेरीओवर कुल कॉलम
- 20. निबर्ननेट, उत्सुक लोडिंग और पेजिंग
- 21. एक-से-एक धाराप्रवाह निबर्ननेट?
- 22. निबर्ननेट और वर्चुअल क्लास गुण?
- 23. फ्लुएंट निबर्ननेट मैपिंग में कई
- 24. निबर्ननेट और मौजूद नहीं है
- 25. ओओ डिजाइन बनाम डाटाबेस डिजाइन
- 26. जावा एपीआई डिजाइन - आंतरिक डिजाइन
- 27. अनुमतियां डिजाइन
- 28. आंतरिक या दाएं बाहरी कई संग्रहों में निबर्ननेट और फ्लुएंट निबर्ननेट में शामिल हों
- 29. ट्रांज़ेक्शनस्कोप त्रुटि के साथ निबर्ननेट - डीटीसी लेनदेन प्रीपेर चरण विफल - निबर्ननेट 3.0
- 30. जावा डिजाइन
+1 –