Unusual NHibernate collection/inheritance mapping -
ये मेरी प्रासंगिक कक्षाएं हैं:
सार्वजनिक वर्ग ArticleMetadata {सार्वजनिक लंबे आईडी {प्राप्त; सेट; } सार्वजनिक स्ट्रिंग स्लग {get; सेट; }} सार्वजनिक वर्ग अनुच्छेद: ArticleMetadata {// यह एक विशाल CLOB है, इसलिए अलग वर्ग सार्वजनिक स्ट्रिंग सामग्री {get; सेट; }} सार्वजनिक वर्ग अनुभाग {सार्वजनिक लंबी आईडी (प्राप्त करें; सेट; } सार्वजनिक आईएलआईआईएसटी & lt; अनुच्छेदमाताडेटा & gt; लेख {प्राप्त करें; सेट; }}
और यहां प्रासंगिक मानचित्रण भाग हैं:
& lt; class name = "article" table = "article" & gt; & Lt; / वर्ग & gt; & Lt;! - ध्यान दें कि यहां कोई स्पष्ट NHibernate उत्तराधिकार मानचित्रण नहीं है - & gt; & Lt; class name = "articlemetadata" तालिका = "आलेख" & gt; & Lt; / वर्ग & gt; & Lt; class name = "section" तालिका = "अनुभाग" & gt; & Lt; बैग नाम = "आलेख" कैसकेड = "अखिल-हटाना-अनाथ" उलटा = "सच" आलसी = "गलत" & gt; & Lt; प्रमुख स्तंभ = "अनुभागआईडी" / & gt; & Lt; एक-से-कई वर्ग = "आलेख मेटाडेटा" / & gt; & Lt; / बैग & gt; & Lt; / वर्ग & gt;
आशा है कि यह सब अब तक स्पष्ट हो गया है।
मैं जो करने की कोशिश कर रहा हूं वह इस प्रकार है: जब मेरे अनुभाग
वस्तुओं का चयन करते हैं, मैं चाहता हूं कि उन्हें केवल "हल्के" ArticleMetadata वस्तुओं को शामिल करना चाहिए लेकिन जब डीबी को
अनुभाग
सेव करते हैं, तो मैं NHibernate को भी लेख
ऑब्जेक्ट्स जारी रखने के लिए चाहता हूं:
var section = new section (); अनुभाग। आलेख। जोड़ें (नया आलेख मेटाडेटा ("ए 1")); अनुभाग। आलेख। जोड़ें (नया अनुच्छेद ("ए 2", "विशाल क्लॉब")); session.SaveOrUpdate (खंड);
वर्तमान में, SaveOrUpdate
किसी भी त्रुटि के बिना बाहर निकलते हैं, लेकिन एक पूर्ण विकसित कोड ऑब्जेक्ट केवल आंशिक रूप से सहेजा जाता है इसका अर्थ है, इसके '<कोड> सामग्री संपत्ति का मूल्य डीबी में नहीं आता है।
अलग से ( लेख। सेव (नया अनुच्छेद) (...));
सभी मैप किए गए गुणों को सहेजने की उम्मीद के अनुरूप काम करता है।
इसे जमा करने के लिए: मैं दोनों ArticleMetadata और
दोनों जोड़ना चाहता हूं आलेख
वस्तुओं को अनुभाग। लेख
संग्रह, और उन्हें उचित रूप से बचाया जाना चाहते हैं क्या यह व्यवहार बिल्कुल संभव है?
मुझे पता है कि यह आपकी समस्या का प्रत्यक्ष समाधान नहीं है (मुझे नहीं लगता कि आप क्या कर रहे हैं विरासत मानचित्रण के बिना काम कर सकते हैं, और उसके बाद आपके पास भी लोड किया गया है)।
ऐसा करने का एक तरीका जो आपको लगता है, एक आलसी भरी हुई संपत्ति, और विरासत को छोड़ दें।
आलसी भरी हुई संपत्तियों पर और अधिक पाया जा सकता है:
एक और तरीका है कि दो संग्रह हों, एक लेख के लिए और एक ArticleMetadata के लिए
Comments
Post a Comment