2013-01-31 9 views
18

मेरे पास दो कोड पहले मॉडल हैं, फू और फूस्टेट जहां फू का वैकल्पिक FooState है।एंटिटी फ्रेमवर्क प्राथमिक कुंजी कोड के रूप में विदेशी कुंजी पहले

public class Foo 
{ 
    [Key] 
    public int FooId { get; set; } 

    public FooState FooState { get; set; } 
} 

public class FooState 
{ 
    [Key] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    [Required] 
    public Foo Foo { get; set; } 
} 

यह ठीक काम करता है लेकिन जब मैं बहुत

public class FooState 
{ 
    [Key] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    [ForeignKey("Foo")] 
    [Required] 
    public int FooId 
    public Foo Foo { get; set; } 
} 

यह सब क्योंकि FooStateId वास्तव में FooId उपयोग कर रहा है के रूप में यह प्राथमिक कुंजी है से अधिक हो जाता है की तरह FooState के लिए विदेशी कुंजी जोड़ने के लिए प्रयास करें। यह डेटाबेस के दृष्टिकोण से समझ में आता है।

हालांकि मुझे FooState रिकॉर्ड को सहेजते समय Foo के उदाहरण को पॉप्युलेट करना नहीं होगा, लेकिन फिर भी आवश्यक विशेषता को बनाए रखना है।

इससे मुझे एक फूआईड और राज्य को एक डॉटो में भेजने की अनुमति मिल जाएगी और अगर मैं अपने राज्य में बदलाव करना चाहता हूं तो पूरे फू ऑब्जेक्ट को डीबी से पुनर्प्राप्त नहीं करना पड़ेगा।

मुझे इसे पहले ईएफ कोड के साथ कैसे स्थापित करना चाहिए?

उत्तर

26

मैंने सोचा कि मैं इसे एक शॉट दूंगा और यह अच्छी तरह से काम करता है।

public class FooState 
{ 
    [Required] 
    [Key] 
    [ForeignKey("Foo")] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    public Foo Foo { get; set; } 
} 
+8

आप [कुंजी, विदेशीकी ("फू") को जोड़ सकते हैं] – Zakos

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