के बीच क्या अंतर है मैं तीव्र आर्किटेक्चर लाइट के साथ खेल रहा हूं, जो कॉन्फ़िगरेशन पर सम्मेलन पर जोर देता है, और यह समझने की कोशिश कर रहा है कि एनएचबीरनेट ConventionModelMapper
कैसे काम करता है। विशेष रूप से, मैं IsRootEntity & IsEntity विधियों के नीचे के बीच अंतर नहीं बता सकता (btw, Entity
एक अमूर्त वर्ग है कि तीव्र आर्क के साथ जहाजों है):NHibernate ConventionModelMapper; IsRootEntity और IsEntity
internal static class Conventions
{
public static void WithConventions(this ConventionModelMapper mapper, Configuration configuration) {
Type baseEntityType = typeof(Entity);
mapper.IsEntity((type, declared) => IsEntity(type));
mapper.IsRootEntity((type, declared) => baseEntityType.Equals(type.BaseType));
public static bool IsEntity(Type type) {
return typeof(Entity).IsAssignableFrom(type)
&& typeof(Entity) != type
&& !type.IsInterface;
}
}
मैं इकट्ठा कि IsEntity
विधि NHibernate बताने के लिए प्रयोग किया जाता है जो कक्षाएं डीबी को मैपिंग/दृढ़ता के लिए पात्र हैं। हालांकि, मैं अपने जीवन के लिए यह नहीं समझ सकता कि IsRootEntity
विधि क्या करती है। ConventionModelMapper
के आसपास दस्तावेज़ बहुत खराब है।
आपके मामले के लिए, IsEntity() को ए और बी के लिए सच होना चाहिए, जबकि IsRootEntity केवल बी के लिए सच होना चाहिए। IsRoot इकाई() IsEntity() का एक उप सेट होना चाहिए और केवल वर्ग विरासत के मैपिंग को नियंत्रित करने के लिए उपयोग किया जाता है। उदाहरण के लिए, यदि आप ए और बी दोनों के लिए IsRootEntity को सत्य पर सेट करते हैं तो यह उनके सभी गुणों को दो अलग-अलग वर्गों के रूप में मैप करेगा। – dotjoe