2013-04-16 7 views
5

पर मैं निम्नलिखित डोमेन वस्तुओं हैएफई 5.0 बहुलता त्रुटि सरल मानचित्रण

public class Person 
{ 
    public int Id {get; set;} 
    public int? FatherId {get; set;} 
    public int? MotherId {get; set;} 
    public int? HomeChurchId {get; set;} 
    public int? BirthCountryId {get; set;} 

    public Parent Father {get; set;} 
    public Parent Mother {get; set;} 
    public Church HomeChurch {get; set;} 
    public Country BirthCountry {get; set;} 
} 

public class Parent 
{ 
    public int Id {get; set;} 
    ... 
} 

public class Church 
{ 
    public int Id {get; set;} 
    ... 
} 

public class Country 
{ 
    public int Id {get; set;} 
    ... 
} 

जब व्यक्ति मानचित्रण, इन गुणों के सभी काफी मैप की जाती हैं उसी तरह:

HasOptional(p => p.Father).WithMany().HasForeignKey(p => p.FatherId); 
HasOptional(p => p.BirthCountry).WithMany().HasForeignKey(p => p.BirthCountryId);  
... 

समस्या है , जन्मकुंडली के साथ मुझे निम्न त्रुटि प्राप्त होती है जब मैं व्यक्ति से पूछताछ करता हूं:

One or more validation errors were detected during model generation: 

System.Data.Entity.Edm.EdmAssociationType: : Multiplicity conflicts with the 
referential constraint in Role 'Person_BirthCountry_Target' in relationship 
'Person_BirthCountry'. Because all of the properties in the Dependent Role are 
non-nullable, multiplicity of the Principal Role must be '1'. 

यदि मैं बी को हटा देता हूं irthCountry संपत्ति (और मैपिंग) सबकुछ ठीक काम करता है। मेरे लिए भ्रमित करने वाला यह है कि जन्मकुंडली व्यक्ति में हर दूसरी नामुमकिन संपत्ति की तरह स्थापित की जाती है। अन्य गुण मुझे एक ही त्रुटि क्यों नहीं दे रहे हैं?

जो भी मदद आप कर सकते हैं के लिए धन्यवाद!

उत्तर

11

अज्ञान आनंद नहीं है ... यह सिर्फ सादा निराशाजनक है।

मुझे अंततः एहसास हुआ कि मेरे पास जन्मकुंडली आईडी पर [आवश्यक] विशेषता थी। यह समस्या पैदा कर रहा था ... जो पूरी तरह से समझ में आता है। मैं ईएफ को नहीं बता सकता कि यह वैकल्पिक है और एक ही समय में आवश्यक है।

उम्मीद है कि यह किसी और को उसी निराशा से बचाता है जिसे मैंने पार किया था।

+0

मैं अभी भी विदेशी केफ़ील्ड में [आवश्यक] विशेषता जोड़ने का तरीका खोज रहा हूं। क्या आपके पास इस त्रुटि को ठीक करने का उत्तर है? – MasterLuV

+0

दरअसल, मेरी त्रुटि ** थी [** [आवश्यक] 'विशेषता का **। विशेषता को हटाने से मेरी समस्या ठीक हो गई। मुद्दा यह है कि, आप इसे एक निरर्थक int के रूप में घोषित नहीं कर सकते (जिसका अर्थ यह है कि यह शून्य है और इसलिए आवश्यक नहीं है) और ईएफ को बताए गए एक विशेषता को जोड़ना आवश्यक है। यदि यह आवश्यक है, तो आपको इसे एक निरर्थक int घोषित नहीं करना चाहिए। – RHarris

+0

मुझे पता है कि [आवश्यक] विशेषता को हटा दें तो सब कुछ ठीक काम करता है। लेकिन असल में, स्ट्रिंग शून्य है, वे [आवश्यक] विशेषता के साथ ईएफ में सक्षम नहीं हो सकते हैं। और जब हम शून्य या खाली होते हैं तो हम त्रुटि संदेश प्राप्त कर सकते हैं – MasterLuV

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