जटिल विरासत मॉडल मैप करते समय इकाई फ्रेमवर्क सीमित हो सकता है। आप मूल रूप से तीन विकल्प हैं लेकिन जब विरासत मानचित्रण:
TPH(पदानुक्रम प्रति तालिका) मानचित्रण: यह मानचित्रण पदानुक्रम और परस्पर विरोधी या "एक ही नाम" फ़ील्ड हो जाएगा में अपने सभी क्षेत्रों के लिए एक एकल तालिका उत्पन्न करता है एक संख्यात्मक बीज द्वारा जोड़ा गया। उदाहरण NAME1 (व्यक्ति), NAME2 (प्रबंधक) आदि के लिए
टीपीटी(तालिका-प्रति-प्रकार) mappping: यह मानचित्रण, प्रत्येक वस्तु के लिए व्यक्तिगत टेबल उत्पन्न करता है लेकिन परस्पर विरोधी गुण नामों केवल आधार में मैप किया जाता है कक्षा। आपके उदाहरण में व्यक्ति वर्ग। नोट: टीपीटी जटिल होने के कारण प्रश्नों में शामिल होने के लिए हतोत्साहित किया जाता है और कुछ मामलों में विसंगतियों आप अनुभव कर रहे
टीपीसी(तालिका-प्रति-ठोस प्रकार) मानचित्रण:, टीपीटी की तरह एक के सभी गुण को छोड़कर विरासत में मिला गुण, इसी तालिका के कॉलम के लिए नक्शे सहित वर्ग,
समाधान:
धारणा है कि आप टीपीटी उपयोग कर रहे हैं और यह आपकी विरासत में मिला वर्ग के सदस्यों मैप नहीं किया जा रहा है इसका मतलब है। मैं सुझाव दूंगा कि आप अपने मैपिंग और माइग्रेशन को उत्पन्न करने के लिए टीपीसी देखें।
टीपीसी उदाहरण::
प्रचार यह आपके DbCOntext में वस्तु:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.Property(c => c.CourseID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<Manager>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Manager");
});
modelBuilder.Entity<Customer>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Customer");
});
}
अस्वीकरण: इसके बजाय मुश्किल आप ऊपर उल्लेख किया मैपिंग प्राप्त करने के लिए एफई में सुविज्ञ एपीआई को देखने के लिए की आवश्यकता होगी यह जानने के लिए कि विरासत संरचना या निष्पादित माइग्रेशन को देखे बिना आपकी समस्या क्या है, हालांकि मुझे लगता है कि ईएफ संबंधों में सबसे आम समस्या ऊपर उल्लिखित है।
यह कोड कोड फर्स्ट और डीबीकॉन्टेक्स्ट की दिशा में तैयार किया गया प्रतीत होता है। हमारी परियोजना डीबी फर्स्ट है, लीगेसी ऑब्जेक्ट कॉन्टेक्स्ट का उपयोग करके ... –
@ शूलबहर हाँ उदाहरण कोड फर्स्ट के लिए है, हालांकि एक ही सिद्धांत डीबी फर्स्ट के लिए लागू होता है। क्या आप एक ईडीएम उत्पन्न करते हैं या आप SQL डेटाबेस प्रोजेक्ट के साथ काम कर रहे हैं? – geekonedge
मैं एक ईडीएम –