2011-09-29 10 views
12

मेरे मॉडल:एफई-संहिता एक नौवहन संपत्ति के साथ पहले जटिल प्रकार

public class Country 
{ 
    public int CountryId { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<User> Users { get; set; } 
} 

public class Location 
{ 
    public string Address { get; set; } 

    public virtual int CountryId { get; set; } 
    public virtual Country Country { get; set; } 
}  

public class User{ 

    protected User() 
    { 
     Location = new Location(); 
    } 

    public int UserId { get; set; } 
    public Location Location { get; set; } 

} 

जब डेटाबेस पैदा करने, मैं मिलता है:

One or more validation errors were detected during model generation: 

System.Data.Edm.EdmEntityType: : EntityType 'Location' has no key defined. Define the key for this EntityType. 
System.Data.Edm.EdmEntitySet: EntityType: EntitySet �Locations� is based on type �Location� that has no keys defined. 

मैं एक जटिल प्रकार के अंदर एक नौवहन संपत्ति कैसे है? अगर मैं देश नेविगेशन संपत्ति को हटा देता हूं, तो यह ठीक काम करता है।

उत्तर

10

जटिल प्रकार पर नेविगेशन गुण (अन्य संस्थाओं को संदर्भित करना) समर्थित नहीं हैं। आपको या तो Location एक इकाई (अपनी तालिका के साथ) बनाना होगा या नेविगेशन प्रॉपर्टी CountryLocation से हटाएं (और स्टीव मॉर्गन द्वारा उल्लिखित [ComplexType] विशेषता जोड़ें)।

संपादित

संदर्भ: http://msdn.microsoft.com/en-us/library/bb738472.aspx

"। परिसर प्रकार नेविगेशन गुण नहीं हो सकते"

+0

लेकिन 'स्थान' कक्षा के अंदर 'CountryID' पूर्णांक के बारे में क्या? क्या यह एक विदेशी कुंजी बाधा बनाना संभव है? (मुझे एक ही समस्या है और इसे काम पर नहीं मिल सकती है) –

+0

@ इसाक: नहीं, यह संभव नहीं है। यदि आप इसे डेटाबेस में एफके रखना चाहते हैं तो आपको इसे डेटाबेस में सीधे करना होगा लेकिन ईएफ इसे प्रतिबिंबित नहीं करेगा। –

+1

तथ्य यह है कि यह समर्थित नहीं है सीधे एमएसडीएन पर कॉम्प्लेक्स प्रकार के विवरण में उल्लिखित है: http://msdn.microsoft.com/en-us/library/bb738472.aspx –

3

ईएफ स्थान के लिए प्राथमिक कुंजी अनुमानित करना चाहता है, लेकिन नहीं कर सकता।

Location कक्षा में जोड़ें और यह खुश होना चाहिए।

यदि आप एक जटिल प्रकार के रूप में Location का उपयोग करना चाहते हैं, तो इसे [ComplexType] विशेषता के साथ एनोटेट करें।

+0

यह एक पूरी नई तालिका उत्पन्न करेगा। मैं इसे एक जटिल प्रकार के रूप में चाहता हूं। –

+0

क्षमा करें - मेरा उत्तर संपादित करें - उम्मीद है कि यह मदद करता है। –

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