c# - To get identity value in Entity Framework 6 -


मेरे पास एक इकाई कार्य है, इसका डोमेन वर्ग है

  सार्वजनिक वर्ग कार्य {सार्वजनिक लंबे कार्यआदेश {प्राप्त करें; सेट; } // ब्ला ब्ला} सार्वजनिक डीबीसेट & lt; कार्य & gt; कार्य {प्राप्त करें; सेट; }   

मुझे उम्मीद है कि टास्कआईडी प्राथमिक कुंजी और ऑटो-वेतन वृद्धि है इसलिए हमारे पास

  सुरक्षित ओवरराइड शून्य OnModelCreating (DbModelbuilder मॉडल निर्माता) {modelBuilder.Entity & lt; कार्य & gt; ()। संपत्ति (x = & gt; x.TaskId) .हाडेटाबेस GeneratedOption (DatabaseGeneratedOption.Identity) .IsRequired (); }   

अब मैं डीबी

  सार्वजनिक बूल AddTaskTable (इंट नंबर, स्ट्रिंग [] पैरामीटर) को जोड़ता हूं (dbContext db = new dbContext (using) )) {var t = नया कार्य {blah blah}; db.Tasks.Add (टी); कोशिश {db.SaveChanges (); वापस सच; }   

भविष्य में उपयोग के लिए सिस्टम द्वारा उत्पन्न TaskId प्राप्त करने के लिए मैं क्या चाहता हूं उदाहरण के लिए, यह एक विदेशी कुंजी है जिसे मैं इसे दूसरे इकाई में उपयोग करना चाहता हूं। मूल्य कैसे प्राप्त करें?

मुझे लगता है, जब आप करते हैं:

< कोड> डीबी.SaveChanges ();

वास्तविक मॉडल बदल गया है, और आईडी जोड़ा गया है। इसलिए यदि आप सहेजने के बाद मॉडल को पढ़ते हैं तो यह अपडेट किया गया आईडी दिखाई देगा।

इस श्रृंखला में अन्य जवाबों को आकर्षित करना यह मेरे जवाब के लिए बहुत ही उचित है और मेरे कार्यान्वयन के लिए एक स्पष्टीकरण है:

EF POCO (सामान्य पुराने CLR ऑब्जेक्ट्स) डोमेन मॉडल बनाता है आपकी संस्था का मॉडल निपटारा नहीं है, लेकिन यह स्मृति में है आपका नया कार्य टी पहले से ही इन-मेमोरी में है, इसलिए जैसे ही SaveChanges विधि को सफलतापूर्वक बुलाया गया हो, आपके ऑब्जेक्ट में स्वतः-जनरेटेड आईडी भी है।

यह मेरा रिपॉज़िटरी कार्यान्वयन है:

  सार्वजनिक टी बनाएँ & lt; T & gt; (टी इकाई) जहां टी: वर्ग {var newEntry = _dbContext.Set & lt; T & gt; ()। जोड़ें (इकाई); _dbContext.SaveChanges (); नई वापसी दें; }   

यहां, इकाई सहेज ली गई है, और नए आईडी के साथ वापस लौटा दी गई है।

अपने कार्यान्वयन में ऐसा करें:

  सार्वजनिक बूल AddTaskTable (इंट नंबर, स्ट्रिंग [] पैरामीटर) {using (dbContext db = new dbContext ()) {var t = नया कार्य {blah blah}; var dbTask = db.Tasks.Add (टी); कोशिश {db.SaveChanges (); // कार्य आईडी dbTask.taskId; वापस सच; }    

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -