में कंपोजिट कुंजी मैपिंग मैं एनएचबीरनेट के लिए नया हूं। अब मुझे समग्र कुंजी मैपिंग के साथ एक समस्या का सामना करना पड़ता है। क्या कोई यूआरएल या नमूना बता सकता है?फ़्लुएंट एनएचबेर्नेट
उत्तर
CompositeId
विधि है।
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
CompositeId()
.KeyProperty(x => x.Something)
.KeyReference(x => x.SomethingElse);
}
}
ध्यान दें कि NHibernate UseCompositeId के नए संस्करणों में CompositeId के साथ प्रतिस्थापित किया गया है, और WithKeyProperty केवल KeyProperty –
@Rob Walker: साथ ही ReRferenceProperty KeyReference – Mulki
इस मामले में KeyProperty और KeyReference में क्या अंतर है? –
अगर यह आपके प्रथम श्रेणी
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
UseCompositeId()
.WithKeyProperty(x => x.Something)
.WithReferenceProperty(x => x.SomethingElse);
}
}
यहाँ
है इकाई
पर एक संदर्भ के साथ दूसरे स्थान पर हैpublic class SecondEntityMap : ClassMap<SecondEntity>
{
public SecondEntityMap()
{
Id(x => x.Id);
....
References<Entity>(x => x.EntityProperty)
.WithColumns("Something", "SomethingElse")
.LazyLoad()
.Cascade.None()
.NotFound.Ignore()
.FetchType.Join();
}
}
समग्र पहचानकर्ता, संस्थाओं है कि नक्शे के साथ संस्थाओं के लिए की आवश्यकता हो सकती है उन टेबलों के लिए जिनमें कई प्राथमिक स्तंभ हैं, जो कई स्तंभों से बना है। इस प्राथमिक कुंजी को बनाने वाले कॉलम आमतौर पर अन्य तालिकाओं के लिए विदेशी कुंजी होते हैं।
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("User");
Id(x => x.Id).Column("ID");
CompositeId()
.KeyProperty(x => x.Id, "ID")
.KeyReference(x => x.User, "USER_ID");
Map(x => x.Name).Column("NAME");
References(x => x.Company).Column("COMPANY_ID").ForeignKey("ID");
}
}
अधिक संदर्भ के लिए: http://www.codeproject.com/Tips/419780/NHibernate-mappings-for-Composite-Keys-with-associ
के लिए कीरफरेंस का उपयोग करें "इस प्राथमिक कुंजी को बनाने वाले कॉलम आमतौर पर अन्य तालिकाओं के लिए विदेशी कुंजी होते हैं।" नहीं, आमतौर पर नहीं। यदि कुछ भी हो, तो वे एक इकाई को विशिष्ट रूप से पहचानने में मदद करते हैं जहां एक कॉलम स्वयं ऐसा करने में विफल रहता है। – user919426
नोट करने के लिए एक और बात है कि आप एक CompositeId का उपयोग कर एक इकाई के लिए बराबर है और GetHashCode तरीकों को ओवरराइड चाहिए। स्वीकार किए गए उत्तर मैपिंग फ़ाइल को देखते हुए, आपकी इकाई इस तरह दिखेगी।
public class Entity
{
public virtual int Something {get; set;}
public virtual AnotherEntity SomethingElse {get; set;}
public override bool Equals(object obj)
{
var other = obj as Entity;
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.SomethingElse == SomethingElse && other.Something == Something;
}
public override int GetHashCode()
{
unchecked
{
return (SomethingElse.GetHashCode()*397)^Something;
}
}
}
- 1. मैं फ़्लुएंट एनएचबेर्नेट
- 2. निम्नलिखित फ़्लुएंट एनएचबेर्नेट मैपिंग में क्या गलत है?
- 3. फ्लुएंट एनएचबेर्नेट एपीआई और .NET 2.0
- 4. क्या कोई फ़्लुएंट एनएचबेर्नेट ऑटोमैपिंग नमूना प्रोजेक्ट है जो "बस काम करता है"?
- 5. फ़्लुएंट एपीआई - कई
- 6. निबर्नेट/फ्लुएंट एनएचबेर्नेट: सबक्लास मैप
- 7. फ़्लुएंट nHibernate: असमर्थित मैपिंग प्रकार
- 8. फ्लोएंट एनएचबेर्नेट
- 9. फ्लुएंट एनएचबेर्नेट
- 10. फ्लुएंट एनएचबेर्नेट
- 11. कंसोल के बजाय ट्रेस या डीबग को आउटपुट क्वेरी करने के लिए फ़्लुएंट एनएचबेर्नेट को कॉन्फ़िगर कैसे करें?
- 12. एक आत्म-संदर्भ फ़ोल्डर पदानुक्रम को मैप करने के लिए मैं फ़्लुएंट एनएचबेर्नेट का उपयोग कैसे करूं?
- 13. एनएचबेर्नेट + पेजिंग + ऑर्डरिंग
- 14. एनएचबेर्नेट और रिपोजिटरी पैटर्न
- 15. भेदभाव वाले एनएचबेर्नेट ऑटोमैपिंग
- 16. एनएचबेर्नेट 3.1 क्वेरी
- 17. एनएचबेर्नेट, लेनदेन और लेनदेनस्कोप
- 18. एनएचबेर्नेट फ्लशमोड ऑटो
- 19. एनएचबेर्नेट लेनदेन सर्वोत्तम व्यवहार
- 20. एनएचबेर्नेट कैश की समाप्ति
- 21. एनएचबेर्नेट इंटरसेप्टर - यह
- 22. एनएचबेर्नेट/लोकलाइजेशन/लुकअप टेबल
- 23. एनएचबेर्नेट: इंटरसेप्टर और श्रोता
- 24. एनएचबेर्नेट और कोड पहले
- 25. फ्लुएंट एनएचबेर्नेट + एकाधिक डेटाबेस
- 26. एनएचबेर्नेट फ्लुएंट बनाम गुण
- 27. नामित क्वेरी फ्लुएंट एनएचबेर्नेट
- 28. एनएचबेर्नेट जो WinForms अनुप्रयोग
- 29. मॉडलिंग एनएचबेर्नेट क्वेरी
- 30. एनएचबेर्नेट कार्यक्रम श्रोताओं
यहाँ http://devlicio.us/blogs/derik_whittaker/archive/2009/01/16/using-fluentnhibernate-to-map-composite-keys-for-a-table अधिक विस्तृत उदाहरण मिल सकता है .aspx –