2011-12-08 13 views
35

के माध्यम से सम्मिलित करने के बाद ऑटो पहचान कुंजी प्राप्त करें क्या एंटीटी फ्रेमवर्क 4.1 के माध्यम से रिकॉर्ड जोड़ते समय डीबी ऑटो जेनरेट की गई प्राथमिक कुंजी को पुनर्प्राप्त करने का कोई सीधा तरीका है?ईएफ

उदाहरण के लिए:

dbcontext.Entity_Tables.Add(new Entity_Table { item1 = val1, item2 = val2 }); 
dbcontext.SaveChanges(); 
newPK = ???; 

एसक्यूएल बराबर होगा:

newPK = executeOnDB("INSERT INTO Entity_Table (item1, item2) VALUES (val1, val2);SELECT @@Indentity";); 

BTW मैं MySQL का उपयोग कर रहा हूँ, लेकिन एसक्यूएल MSSQL

+5

मैं सिर्फ यह इंगित करना चाहता हूं कि 'SELECT @@ पहचान' अंतिम डाली गई आईडी प्राप्त करने का एक अच्छा तरीका नहीं है। आपको 'SCOPE_IDENTITY()' – Icarus

+0

धन्यवाद Icarus का उपयोग करना चाहिए। मैंने कभी यह महसूस नहीं किया। मुझे लगता है कि मुझे अपने कुछ पुराने ऐप्स भी अपडेट करना चाहिए! – chrisg229

+0

संभावित डुप्लिकेट [मैं इकाई ढांचे में सम्मिलित इकाई के आईडी कैसे प्राप्त कर सकता हूं?] (Http://stackoverflow.com/questions/5212751/how-can-i-get-id-of-inserted-entity-in-entity -फ्रेमवर्क) –

उत्तर

73

पर के रूप में ही होगा मेरा मानना ​​है कि एफई पहचान के साथ अपनी इकाई वस्तु को अद्यतन करना चाहिए:

var entity = new Entity_Table { item1 = val1, item2 = val2 }; 
dbcontext.Entity_Tables.Add(entity); 
dbcontext.SaveChanges(); 
int newPK = entity.ID; 
+3

मैंने अभी पुष्टि की है कि यह वही है जो यह करता है। बहुत धन्यवाद ओबी! – chrisg229

+2

जब मैं सम्मिलित करता हूं, वहां एक सम्मिलित होता है जिससे टेबल पर ट्रिगर होता है जो अपनी खुद की गुण जोड़ता है, और इसलिए, यदि परिवर्तनों को सहेजना भी सक्रिय हो रहा है, तो उस डालने से पहले सम्मिलित किया जाता है, और इसलिए, मेरे लिए आईडी वापस 0 है, और आईडी का वास्तविक मूल्य कुछ और है। उस मामले में मुझे मूल्य कैसे प्राप्त होगा? – Mahesh