तो यह पता चला है कि मैं टीपीटी (तालिका प्रति प्रकार) विरासत को लागू करते समय माइक्रोसॉफ्ट के एंटिटी फ्रेमवर्क में मौजूद मौलिक मंजिल की खोज करने वाला अंतिम व्यक्ति हूं।एंटीटी फ्रेमवर्क टेबल प्रति प्रकार प्रदर्शन
3 उप वर्गों के साथ एक प्रोटोटाइप बनाने के बाद, बेस टेबल/कक्षा जिसमें 20+ कॉलम शामिल हैं और ~ 10 कॉलम वाली बाल तालिकाएं, सब कुछ खूबसूरती से काम करता है और मैंने शेष आवेदन पर काम करना जारी रखा है अवधारणा। अब समय 20 अन्य प्रकारों और ओएमजी जोड़ने के लिए आया है, मैंने बस एक साधारण चयन पर उत्पन्न होने वाले एसक्यूएल को देखना शुरू कर दिया है, भले ही मैं केवल बेस क्लास पर फ़ील्ड तक पहुंचने में रूचि रखता हूं।
This page समस्या का एक अद्भुत विवरण है।
किसी टीपीटी और एफई का उपयोग कर उत्पादन में चला गया है, वहाँ किसी भी कामकाज से जुड़े हैं इसका मतलब यह होगा कि मैं नहीं करना होगा: क) TPH (जो सब कुछ के खिलाफ जाता है करने के लिए स्कीमा मैं के साथ प्राप्त करने का प्रयास कन्वर्ट मेरी डीबी डिजाइन - urrrgghh!)? बी) एक और ओआरएम के साथ फिर से लिखना?
जिस तरह से मैं इसे देखता हूं, मुझे ईएफ के भीतर से संग्रहीत प्रक्रिया का संदर्भ जोड़ने में सक्षम होना चाहिए (संभवतः EFExtensions का उपयोग करना) जिसमें टीएसक्यूएल है जो केवल आवश्यक फ़ील्ड का चयन करता है, यहां तक कि ईएफ द्वारा उत्पन्न कोड का उपयोग करना राक्षस यूनियन/एसपी के अंदर शामिल होने के लिए प्रत्येक बार कॉल किए जाने पर एसक्यूएल उत्पन्न होने से रोका जाएगा - ऐसा कुछ नहीं जिसे मैं करना चाहता हूं, लेकिन आपको विचार मिलता है।
मुझे जो हत्यारा मिला है, वह यह है कि जब मैं आधार तालिका से जुड़ी संस्थाओं की एक सूची का चयन कर रहा हूं (लेकिन जिस इकाई को मैं चुन रहा हूं वह उप-वर्ग तालिका नहीं है), और मैं पीके द्वारा फ़िल्टर करना चाहता हूं बेस टेबल का, और मैं .Include("BaseClassTableName")
करता हूं ताकि मुझे x=>x.BaseClass.PK == 1
का उपयोग करके फ़िल्टर करने की अनुमति मिल सके और अन्य गुणों तक पहुंच सकें, यह यहां माँ एसक्यूएल पीढ़ी भी करता है।
मैं ईएफ 4 का उपयोग नहीं कर सकता क्योंकि मैं 3.5 एसपी 1 स्थापित के साथ .NET 2.0 रनटाइम तक सीमित हूं।
क्या किसी को भी इस गड़बड़ी से बाहर निकलने का कोई अनुभव मिला है?
मैं पूर्व EF4 के लिए नहीं बोल सकता है, लेकिन उस में बयान "टेबल-पर-प्रकार विरासत 100% है ब्लॉग व्यर्थ। " थोड़ा हास्यास्पद है - कम से कम ईएफ 4 में। इसमें कुछ प्रदर्शन समस्याएं हैं - लेकिन यदि आपके पास 20 उप प्रकार हैं, तो क्या आप वाकई सही डेटाबेस सामान्यीकरण कर चुके हैं? क्या उन 20 उप प्रकारों को अलग-अलग माता-पिता इकाइयों में विभाजित नहीं किया जा सकता है? – RPM1984
ऐसा लगता है कि अन्य ओआरएम किसी समस्या के बिना टीपीटी डिज़ाइन को संभालते हैं। ब्लॉग के संबंध में, यह बताता है कि जब डेटाबेस/क्लास डिज़ाइन को बड़ी संख्या में उपयोग किया जाता है, तो निष्पादन से पहले SQL उत्पन्न करने में लगने वाला समय कई मिनट से अधिक होता है, मुझे विश्वास है कि कथन का बैक अप लेने के लिए पर्याप्त है यह एक उत्पादन वातावरण में अनुपयोगी है। वाहन वाहन सूची के बारे में सोचें, जिसमें प्रत्येक वाहन (बेस टेबल/क्लास) के बारे में सामान्य जानकारी संग्रहीत की जाती है और फिर विमान/ट्रेन/ऑटो-मोबाइल (उप तालिका/कक्षा) के बारे में संग्रहीत अद्वितीय जानकारी - मैं वाहनों से निपट नहीं रहा हूं, लेकिन आप विचार – Tr1stan
... और वहां> 20 विभिन्न वाहन प्रकारों को संग्रहीत किया जा रहा है, इससे पहले कि आप वाहन उपप्रकारों और सभी लुकअप मानों में भी जाना शुरू करें। – Tr1stan