2013-06-06 6 views
18

मैं इकाई की रूपरेखा का उपयोग कर एक ASP.net आवेदन के विकास कर रहा हूँ के बाद इकाई की रूपरेखा में रिकार्ड ID प्राप्त करें। मैं डाटाबेस में डेटा डालने के लिए DetailsView का उपयोग कर रहा हूं। Client के रूप में एक तालिका है और इसकी प्राथमिक कुंजी client_id है। client_id डेटाबेस द्वारा स्वतः उत्पन्न होता है। मैं स्वचालित रूप से जेनरेट client_id मिल Client तालिका में एक रिकॉर्ड डालने के बाद और भविष्य में उपयोग के लिए एक छिपी हुई फ़ील्ड निर्दिष्ट करने के लिए की जरूरत है।डालने

मैं इस बारे में खोज की है और मैं समाधान के काफी मात्रा में पाए। लेकिन मुझे नहीं पता कि उनका उपयोग कैसे किया जाए क्योंकि मैं एएसपीनेट के लिए नया हूं। मैंने पाया कि एंटीटी फ्रेमवर्क स्वचालित रूप से SaveChanges() पर कॉल के बाद डीबी-जेनरेट किए गए मानों के साथ व्यावसायिक वस्तुओं को पॉप्युलेट करता है। मेरा सवाल यह है कि मैं इसे अपने आंशिक वर्ग में कहां कहूं? कार्यक्रम क्या है ?

मैं EntityDataSource के साथ विवरण दृश्य का उपयोग कर रहा हूं और एंटीटी मॉडल के साथ सीधे बाध्यकारी EntityDataSource का उपयोग कर रहा हूं, इसलिए मैं डेटा डालने के लिए ऑब्जेक्ट्स नहीं बना रहा हूं।

+0

की संभावित डुप्लिकेट ([? मैं इकाई की रूपरेखा में डाला संस्था की पहचान कैसे प्राप्त कर सकते हैं] http://stackoverflow.com/questions/5212751/how-can-i-: यहाँ यह vb.net में है Get-id-of-inserted-entity-in-entity-framework) –

+1

@ माइकल फ्रीिजिम यह डुप्लिकेट नहीं है क्योंकि बिशन इसे EntityDataSource के साथ चाहता है और सवाल और उत्तर एंटीटीडेटा स्रोत से संबंधित नहीं हैं। –

उत्तर

3

यही वह है जिसे मैं ढूंढ रहा हूं।

आंशिक वर्ग

protected void clientDataSource_OnInserted(object sender, EntityDataSourceChangedEventArgs e) 
{ 

    int newPrimaryKey = ((Client)e.Entity).ClientId; 
    Debug.WriteLine(" Client ID is " + newPrimaryKey); 

} 

और aspx पेज में EntityDataSource में रेखा से नीचे जोड़ा में।

OnInserted="clientDataSource_OnInserted" 
+1

धन्यवाद! यही वही है जो मैं ढूंढ रहा था! –

5

आपके द्वारा इकाई डालने के बाद इसे अद्यतन किया जाना चाहिए ताकि डेटाबेस में प्राथमिक कुंजी को मैप करने वाली संपत्ति में नया पीके मान हो।

MyObject.Id जैसा आप नई आईडी

+0

मैं EntityDataSource के साथ विवरण दृश्य का उपयोग कर रहा हूं और एंटीटी मॉडल के साथ सीधे बाध्यकारी EntityDataSource का उपयोग कर रहा हूं। इसलिए मैं डेटा डालने के लिए ऑब्जेक्ट्स नहीं बना रहा हूं। – Bishan

37

दे देंगे _dbContext.SaveChanges() करने के लिए कॉल के बाद, इकाई स्वचालित रूप से अपनी नई पहचान फ़ील्ड मान के साथ अद्यतन किया जाएगा।

निम्नलिखित कोड मानती है कि आपके इकाई की रूपरेखा इकाई कंटेनर नाम MyEntities है, और अपने डेटाबेस के ग्राहक तालिका कम से कम दो निम्नलिखित क्षेत्रों है:

// Establish DbContext 
private readonly MyEntities _dbContext = new MyEntities(); 

// Create new client table entity and initialize its properties 
var clientEntity = new Client { client_name="MyCo" }; 

// Add it to the ORM's collection of Client entities 
_dbContext.Clients.Add(clientEntity); 

// Save the new entity to the database 
_dbContext.SaveChanges(); 

// Return the identity field from the existing entity, 
// which was updated when the record was saved to the database 
return clientEntity.client_id; 
:

client_id int identity 
client_name varchar(25) 

आपका कोड कुछ इस तरह लग सकता है

+0

मैं 'EntityDataSource' के साथ 'विवरण दृश्य' का उपयोग कर रहा हूं और सीधे एंटीटी मॉडल के साथ' EntityDataSource' को बाध्यकारी कर रहा हूं। इसलिए मैं डेटा डालने के लिए ऑब्जेक्ट्स नहीं बना रहा हूं। – Bishan

0

धन्यवाद, मैं 3 दिन बिताए खोज और जटिल परिणामों के साथ खोज लेकिन इस समाधान शानदार है!

Protected Sub dvArticulos_ItemInserted(sender As Object, e As EntityDataSourceChangedEventArgs) Handles EntityDataSource1.Inserted 
    Dim last_Serie As Long = DirectCast(e.Entity, articulos).Serie 
    Session("Articulo") = last_Serie 
End Sub 
संबंधित मुद्दे