referential integrity - Adding new child records to a parent table in entity framework 6 -
मेरे पास 3 टेबल हैं:
खाता: आईडी, नाम उपयोगकर्ता: आईडी, खाता आईडी, नाम UserDetail: आईडी, उपयोगकर्ता आईडी, फोन एंटाइटिट्स: < / P> मैं वर्तमान में किसी मौजूदा खाते में एक उपयोगकर्ता और उपयोगकर्ता खाता रिकॉर्ड सम्मिलित करने का प्रयास कर रहा हूं। तो मेरा कोड इस तरह दिखता है: मुझे निम्न त्रुटि मिल रही है: "रेफरेंसियल कंसल्टेंट में एक आश्रित संपत्ति को एक स्टोर-जनरेटेड कॉलम के लिए मैप किया गया है। कॉलम: 'आईडी'।" विचार? रेफरेंसियल कंसल्टेंट में एक आश्रित संपत्ति एक दुकान से उत्पन्न कॉलम के लिए मैप किया गया है। कॉलम: "आईडी" मैंने इस त्रुटि को और अधिक विस्तार से खोजा और इस पोस्ट में आया: असल में, यह कहता है कि UserDetail.Id (जो निर्भर संपत्ति है) में एक संदर्भ है बाधा है और यह भी एक दुकान जनित कॉलम यानी autoincrement है। समाधान या तो autoincrement संपत्ति को निकालना या उपयोगकर्ता को UserDetail पर या UserDetail पर उपयोगकर्ता के लिए एक अलग एफके जोड़ना था। सीख गए पाठ: 1. निश्चित रूप से कक्षा / तालिका के नाम के साथ पहचान स्तंभ हैं उदाहरण के लिए, यदि आप कर सकते हैं, तो अपनी पहचान (पीके) कॉलम को तालिका के नाम से एक प्रीपेड के रूप में नाम दें इसलिए मेरे प्रश्न में, मुझे सभी आईडी कॉलम को अकाउंट आईडी, यूज़रआईडी, यूज़र डेलटीआईडी में बदलना चाहिए। क्यों? इस बात का गड़बड़ी है कि ईएफ ने मुझे देखने के लिए एक स्पष्ट संकेत दिया होता। UserDetailId पर मानचित्रण पर इसके बिना, मैं सोच रहा था कि कौन सा मानचित्रण समस्याग्रस्त था।
सार्वजनिक आंशिक वर्ग खाता {सार्वजनिक खाता} (यह। उपयोगकर्ता = नया हैशसेट & lt; उपयोगकर्ता & gt; (); } सार्वजनिक इन्ट आईडी {get; set;} सार्वजनिक स्ट्रिंग नाम {get; set;} सार्वजनिक आभासी आइकलोनैक & lt; उपयोगकर्ता & gt; उपयोगकर्ता {प्राप्त; सेट;}} सार्वजनिक आंशिक वर्ग UserDetail {सार्वजनिक इन्ट आईडी {get; set;} सार्वजनिक स्ट्रिंग फोन {get; set;} सार्वजनिक युवराज उपयोगकर्ता उपयोगकर्ता {get; set;}} सार्वजनिक आंशिक कक्षा उपयोगकर्ता {सार्वजनिक उपयोगकर्ता ) {this.Accounts = नया हैशसेट & lt; खाता & gt; (); } सार्वजनिक इंट आईडी (प्राप्त करें; सेट;) सार्वजनिक आभासी आइकलेंकिंग & lt; खाता & gt; खाता (प्राप्त करें; सेट;) सार्वजनिक वर्चुअल यूज़रडैबिटल यूज़रडिटल {get} सेट;}} जैसा कि आप देख सकते हैं, उपयोगकर्ता के लिए खाता कई रिश्ते में से एक है इसलिए मेरा खाता इकाई में उपयोगकर्ता डीबीसेट । जबकि प्रयोक्ता के लिए UserDetail एक-से-एक संबंध है।
var newUserDetail = नया UserDetail (); NewUserDetail.Phone = 014109842; Var newUser = नया उपयोगकर्ता (); newUser.Name = "जॉन स्मिथ"; NewUser.UserDetail = newUserDetail; var चालूआदेश = _dbContext.Accounts.First (a = & gt; a.Id == 100); currentAccount.User.Add (NEWUSER); _dbContext.SaveChanges ();
Comments
Post a Comment