2012-10-24 12 views
5

समस्या बहुत सामान्य लगती है, लेकिन मैं fluentnhibernate के लिए नया हूं और मेरी सभी खोजों ने कुछ भी उपयोगी नहीं किया है।सबक्लास के उप-वर्गों के लिए भेदभावकर्ता का उपयोग

public class Person 
{ 
    public virtual int Id { get; protected set; } 
    public virtual string GivenName { get; set; } 
    public virtual string FamilyName { get; set; } 
} 

public class Employee : Person 
{ 
    public virtual string WhoAmI { get { return "I am just an Employee"; } protected set { } } 
} 

public class Boss : Employee 
{ 
    public override string WhoAmI { get { return "I am the boss."; } protected set { } } 
} 

यानी:

मैं एक वर्ग पदानुक्रम इस एक के समान है एक बेस क्लास और दो उप-वर्ग (एक दूसरे से व्युत्पन्न)। उप-वर्गों का एक ही हस्ताक्षर होता है, लेकिन आधार वर्ग नहीं है।

मानचित्रण नीचे एक ही तालिका में तीन वर्गों के उदाहरण के बारे में सभी जानकारी डाल देंगे:

public class PersonMap : ClassMap<Person> 
{ 
    public PersonMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.GivenName); 
     Map(x => x.FamilyName); 
    } 
} 

public class EmployeeMap : SubclassMap<Employee> 
{ 
    public EmployeeMap() 
    { 
     Map(x => x.WhoAmI); 
    } 
} 

public class BossMap : SubclassMap<Boss> 
{ 
    public BossMap() 
    { 
    } 
} 

मेरा प्रश्न:

public class PersonMap : ClassMap<Person> 
{ 
    public PersonMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.GivenName); 
     Map(x => x.FamilyName); 
     DiscriminateSubClassesOnColumn("type"); 
    } 
} 

public class EmployeeMap : SubclassMap<Employee> 
{ 
    public EmployeeMap() 
    { 
     Map(x => x.WhoAmI); 
    } 
} 

public class BossMap : SubclassMap<Boss> 
{ 
    public BossMap() 
    { 
    } 
} 

DiscriminateSubClassesOnColumn बाहर छोड़कर तीन तालिकाओं उत्पन्न होगा है यह कक्षाएं (फ्लेंटेंबर्ननेट में) को इन कक्षाओं को बिल्कुल दो तालिकाओं में मैप करने के लिए, यानी

  • एक व्यक्ति तालिका जिसमें व्यक्ति वर्ग से व्युत्पन्न सभी गुण हैं, और
  • एक कर्मचारी तालिका जिसमें कर्मचारी वर्ग से प्राप्त सभी संपत्तियां हैं, साथ ही एक भेदभावकर्ता जो सामान्य कर्मचारियों और मालिकों के बीच भेदभाव करता है?

उत्तर

0

तो EmployeeMap लिए आप बस उर्फ ​​BossMap:

public class BossMap : EmployeeMap {} 

आप मानचित्रण कि आप की आवश्यकता मिलना चाहिए।

+0

वास्तव में नहीं। ऐसा लगता है कि मुझे लगता है कि FlissentConfigurationExceptions, दोनों PersMapinateSubClassesOnColumn के साथ PersonMap में और बिना। – nasenbohrer

+0

अपवाद संदेश क्या है? –

+0

सबसे बड़ा अपवाद "डुप्लिकेट क्लास/इकाई मैपिंग उदाहरण था। फर्स्टप्रोजेक्ट.इन्टिटीज। कर्मचारी" – nasenbohrer

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