2015-12-14 10 views
5

मानचित्र डोमेन:धाराप्रवाह NHibernate Automapping: एक तुच्छ आधार वर्ग संग्रह

public class BaseClassClient 
{ 
    public virtual ICollection<BaseClass> BaseObjects{ get; set; } 
} 

public abstract class BaseClass 
{ 
} 

public class SubClass1 : BaseClass 
{ 
} 

public class SubClass2 : BaseClass 
{ 
} 

मैं त्रुटि Association references unmapped class मिलता है, हालांकि दोनों उप वर्गों मैप की जाती हैं। जाहिर है, बेस क्लास खुद मैप नहीं किया गया है। कृपया इसे हल करने का सुझाव दें।

संपादित

मैं नहीं बल्कि यह है कि दूसरे के लिए डुप्लीकेट के रूप में एक प्रश्न के बंद करने से पहले, वे सिर्फ पढ़ने के लिए नहीं होगा, लेकिन यह भी दोनों सवालों को समझने के लिए परवाह है।

Ihave प्रश्न Error: fluent NHibernate mapping which references mapping in different assembly देखा। लेकिन यह एक अलग परिदृश्य के बारे में बात करता है।

मेरा परिदृश्य नीचे जैसा है।

public class Product 
{ 
    public int Id { get; set; } 
    public ICollection<BasePricingRule> PricingRules{ get; set; } 
} 

public abstract class BasePricingRule 
{ 
    public int Id { get; set; } 
    //other properties 
} 

//Several concrete classes inherit from BasePricingRule. 

मैं प्रति वर्ग कक्षा में एक टेबल और बेस क्लास के लिए कोई टेबल नहीं चाहता हूं। इसलिए, BasePricingRule के लिए कोई मैपिंग नहीं है। मैं कक्षाओं को स्वत: मैप करने की अनुमति दे रहा हूं, मौलिक रूप से आवश्यक ओवरराइड प्रदान करता हूं। मैंने उत्पाद वर्ग के लिए नीचे एक ऑटोपैपिंग ओवरराइड बनाया है।

public void Override(FluentNHibernate.Automapping.AutoMapping<Product> mapping) 
    { 
     mapping.HasMany(product => product.PricingRules); //Not really sure 
                  // about how to map this. 
    } 

मैं विरासत मैपिंग के लिए http://ayende.com/blog/3941/nhibernate-mapping-inheritance की तरह उदाहरण देखकर किया गया है। लेकिन ये उदाहरण वास्तव में उस मुद्दे को संबोधित नहीं करते हैं जिसका सामना मैं कर रहा हूं। त्रुटि से अधिक, मैं जानना चाहता हूं कि मुझे इस डोमेन को धाराप्रवाह NHHernate के माध्यम से कैसे मैप करना चाहिए, अधिमानतः ऑटोमैपिंग ओवरराइड का उपयोग करना।

+0

आपके विन्यास पोस्ट करें, आप धाराप्रवाह मानचित्रण के लिए विधानसभा को मैप किया? इस पोस्ट को जांचें http://stackoverflow.com/a/6227248/1225337 –

+0

हां, मैंने किया। टाइप मैपिंग यहां मुद्दा नहीं है। मैंने बेस क्लास प्रकार को मैप नहीं किया है, लेकिन केवल ठोस सबक्लास प्रकार जिनके लिए मैं एक टेबल रखना चाहता हूं। जिस लिंक को आप इंगित करते हैं वह इस विरासत मुद्दे को संबोधित नहीं करता है। –

उत्तर

0

बिंदु यह है कि, तालिका प्रति कंक्रीट कक्षा दृष्टिकोण के लिए भी, आपको बेस क्लास को मानचित्र बनाना होगा। जिस तरह से आप सोच रहे हैं बस नहीं। आप इस महान लेख पर एक नज़र रखना चाहिए: www.codeproject.com/Articles/232034/Inheritance-mapping-strategies-in-Fluent-Nhibernat

यह होगा और अधिक या कम इस तरह:

public class BaseClassMap : ClassMap<BaseClass> { 
    public BaseClassMap() { 
     // indicates that this class is the base 
     // one for the TPC inheritance strategy and that 
     // the values of its properties should 
     // be united with the values of derived classes 
     UseUnionSubclassForInheritanceMapping(); 
    } 
} 

public class SubClass1Map : SubclassMap<SubClass1> { 
    public SubClass1Map() { 
     Table("SubClass1Table"); 
     Abstract(); 
    } 
} 

public class SubClass2Map : SubclassMap<SubClass2> { 
    public SubClass1Map() { 
     Table("SubClass2Table"); 
     Abstract(); 
    } 
} 
संबंधित मुद्दे