मेरे पास निम्नलिखित परिदृश्यप्रति वर्ग वर्ग को तालिका कैसे प्राप्त करें जब आधार वर्ग धाराप्रवाह निबर्ननेट में सार है?
public abstract class BaseClass
{
public virtual int Id {get; set};
public virtual string Name {get; set;}
}
public class FirstSubClass : BaseClass
{
//properties and behaviour here
}
public class SecondSubClass : BaseClass
{
//properties of SecondSubclass Here
}
public class ProcessStep
{
public virtual IList<BaseClass> ContentElements {get; set;}
}
मैपिंग के लिए है, मैंने निम्नलिखित कोड स्निपेट का उपयोग किया है: -
this._sessionFactory =
Fluently.Configure().Database(SQLiteConfiguration.Standard
.ConnectionString(@"Data Source=SqliteTestSqlDataAccess.s3db; Version=3; New=True; Pooling=True; Max Pool Size=1;"))
.Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(assemblyWithDomainClasses).Conventions.Add(DefaultCascade.All())))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
डिफ़ॉल्ट धाराप्रवाह बेसबैस के सार बेस क्लास को अनदेखा कर देगा। लेकिन क्लास प्रोसेसस्टेप के रूप में संपत्ति ContentElements है जो IList लौटाता है, मुझे अपवाद मिल रहा है: - NHibernate.MappingException: एसोसिएशन संदर्भ अपरिवर्तित वर्ग: बेसक्लास
यदि मैं IncludeBase का उपयोग कर बेस क्लास शामिल करता हूं (टाइपऑफ (बेस क्लास)) तो यह ठीक काम करता है लेकिन यह बेस क्लास और व्युत्पन्न कक्षाओं के लिए एक टेबल बनाता है और रिकॉर्ड एफके-पीके रिलेशनशिप ( तालिका प्रति subclass) से जुड़े होते हैं। मैं जो हासिल करना चाहता हूं वह तालिका प्रति कंक्रीट वर्ग है। प्रत्येक व्युत्पन्न वर्ग में इसकी अपनी तालिका होगी जहां बेस क्लास में व्युत्पन्न कक्षा + गुणों के सभी गुण होंगे। कोई विचार यह कैसे प्राप्त करें?
मैं उपयोग कर रहा हूँ ऑटोमैपिंग इसलिए, मेरे पास कक्षाओं को अलग से मैप करने के प्रावधान नहीं हैं। – Niraj
आप कस्टम मैपिंग के साथ ऑटोमैपिंग को मिश्रित कर सकते हैं, ताकि आप केवल विशिष्ट वर्गों के लिए मैपिंग प्रदान कर सकें, बाकी वर्गों को ऑटोपैपिंग का उपयोग करके मैप किया जा सकता है। कुछ कुछ इस तरह की तरह। कॉन्फ़िगर (कॉन्फ़िगरेशन)। मैपिंग्स (cfg => {cfg.AutoMappings.Add (....); cfg..FluentMappings.AddFromAssembly (आपकी कस्टम मैपिंग असेंबली);}) – Rajeesh