2012-06-13 10 views
6

मेरे पास परिदृश्य है जहां एक तालिका से डेटा 2 ऑब्जेक्ट्स में होना चाहिए।इकाई फ्रेमवर्क कोड सबसे पहले: नेस्टेड ऑब्जेक्ट्स के साथ कक्षा में फ्लैट टेबल को मैप करने के लिए कैसे करें

[Table] 
-Field1 
-Field2 
-Field3 
-Field4 

और इस तरह वर्ग देखो:

[Class1] 
-Field1 
-Field2 
-Class2 object here 

[Class2] 
-Field3 
-Field4 

मैं Class2 जो क्षेत्र 3 और 4. मैं भी जोड़ लिया है शामिल की संपत्ति पर विशेषता [NotMapped] Class1 में निर्धारित किया है डाटाबेस संदर्भ में विन्यास:

public class ConfigurationClass1 : EntityTypeConfiguration<Class1> { 
    public ConfigurationClass1() { 
     Property(o => o.Class2.Field3).HasColumnName("Field3"); 
     Property(o => o.Class2.Field4).HasColumnName("Field4"); 
    } 
} 

समस्या यह है कि मुझे मिल गया जब मैं Class1 साथ इकाई की रूपरेखा का उपयोग करने का प्रयास करें:

संपत्ति 'कक्षा 2' प्रकार 'कक्षा 2' पर घोषित संपत्ति नहीं है। सत्यापित करें कि इग्नोर विधि या NotMappedAttribute डेटा एनोटेशन का उपयोग कर संपत्ति को मॉडल से स्पष्ट रूप से बहिष्कृत नहीं किया गया है। सुनिश्चित करें कि यह एक वैध आदिम संपत्ति है।

मैं एक इकाई के साथ एंटीटी फ्रेमवर्क कोड का उपयोग कैसे कर सकता हूं जिसमें एक फ्लैट टेबल में सभी जानकारी के साथ नेस्टेड ऑब्जेक्ट है?

उत्तर

7

आप इस तरह ऐसा कर सकते हैं यदि कक्षा 2 को Complex type के रूप में ईएफ सीएफ द्वारा पहचाना जा सके।

संक्षेप में:

  1. Class2 अन्य एफई संस्थाओं के सभी संदर्भ शामिल नहीं होना चाहिए। अन्य जटिल प्रकारों या मानक प्रकारों के लिए केवल
  2. कक्षा 2 सामान्य नहीं हो सकता है। इस मामले में एक कामकाज के रूप में आप एक गैर-जेनेरिक घोंसला वर्ग बना सकते हैं और इसे अपने कक्षा 1 में उपयोग कर सकते हैं।
+0

एक साधारण समस्या के लिए बहुत परेशानी की तरह लगता है। –

+0

@ चक कॉनवे सहमत हैं, लेकिन इस तरह यह ईएफ –

+0

में काम करता है, मैं पूरी तरह से कॉम्प्लेक्स टाइप के बारे में भूल गया था। एक बार जब मैं इसे ComplexType विशेषता के साथ सेट करता हूं, तो सबकुछ काम करता है। धन्यवाद। +1 और स्वीकार किया :) –

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

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