2011-04-12 15 views
19

मेरे पास निम्न मॉडल है।पहचान कोड के साथ ईएफ कोड प्रथम अभिभावक-बाल सम्मिलन

class Parent 
{ 
    int ParentId (identity column) { get; set; } 
    string ParentName { get; set; } 
    virtual ICollection<Child> Children { get; set; } 
} 

class Child 
{ 
    int ChildId (identity column) { get; set; } 
    string ChildName { get; set; } 
    int ParentID { get ; set; } //foreign key to Parent(ParentID) 
} 

कैसे मैं अपने माता पिता और एक लेन-देन में बच्चे को कुछ पंक्तियां सम्मिलित करते हैं? असल में मैं माता-पिता पर उत्पन्न पहचान प्राप्त करना चाहता हूं (कहें कि मैं माता-पिता में एक पंक्ति डालता हूं) और उस मूल्य के साथ बाल पंक्तियां डालें? कोड प्रथम का उपयोग करके इसे कैसे प्राप्त किया जा सकता है?

उत्तर

37

आपको Child पंक्तियों को सम्मिलित करने के लिए Parent के आईडी के मूल्य के बारे में चिंता नहीं करनी चाहिए। यह पर्याप्त होना चाहिए:

var parent = new Parent 
{ 
    // fill other properties 

    Children = new List<Child>() 
} 

parent.Children.add(new Child { /*fill values */); 

dbContext.Parents.Add(parent); // whatever your context is named 
dbContext.SaveChanges(); 

रिकॉर्ड के लिए, पहचान पत्र, SaveChanges() बुला के बाद आवंटित किया जाएगा, इसलिए यदि आप वास्तव में आईडी जरूरत है एक Child इकाई डालने से पहले आप हमेशा दो बार SaveChanges() कॉल कर सकते हैं।

फिर भी, यह आवश्यक नहीं होना चाहिए।

वैसे, मैं Child से Parent करने के लिए एक नेविगेशन संपत्ति विदेशी कुंजी संपत्ति बनाने की सिफारिश करेंगे, तो Child वर्ग दिखाई देगा:

class Child 
{ 
    public int ChildId { get; set; } // identity column 
    public string ChildName { get; set; } 
    public virtual Parent Parent { get ; set; } //foreign key to Parent 
} 

इस तरह आप हमेशा बिना सीधे बच्चे के माता पिता का उपयोग कर सकते इसे स्वयं डेटाबेस से स्पष्ट रूप से पुनर्प्राप्त करना है (यह आलसी लोड हो जाएगा)।

+0

आप 'SaveChanges' और' dbContext.Parents.Add (पैरेंट) 'इरादा नहीं था? –

+0

@ Ladislav - हाँ और हाँ, मैंने अपना जवाब सही कर दिया है, धन्यवाद। जब मैंने इसका उत्तर दिया और मैं विचलित/उलझन में आया तो मैं अपने स्वयं के कार्य कार्यान्वयन की इकाई देख रहा था :) –

+1

इकाई ढांचा पहले माता-पिता और फिर बच्चों को सम्मिलित करता है। 'अभिभावक -> new_created_parent_id' में डालें और फिर' बच्चे (..., parent_id) मानों में डालें (..._ new_created_parent_id) '। मैंने इसका परीक्षण किया और जैसा कि आपने कहा कि यह काम करता है, लेकिन मैं दस्तावेज़ीकरण की तलाश में हूं जहां यह इस व्यवहार को बताता है। या यह दस्तावेज़ीकरण (एमएसडीएन) में डालने के लिए यह भी तार्किक है? – broadband

2

ऐसा करने के उदाहरण के लिए, नया ईएफ कोड फर्स्ट एमवीसी ट्यूटोरियल श्रृंखला देखें। श्रृंखला में 6 वें व्यक्ति का इसका उदाहरण है। 10 की श्रृंखला में होने वाले पहले व्यक्ति है: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

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