क्या मैं LINQ इन्सर्ट करने के बाद 'id' फील्ड वापस कर सकता हूँ?


182

जब मैं Linq-to-SQL के साथ DB में एक ऑब्जेक्ट दर्ज करता हूं, तो क्या मैं उस आईडी को प्राप्त कर सकता हूं जिसे मैंने सिर्फ एक और डीबी कॉल किए बिना डाला है? मुझे लगता है कि यह बहुत आसान है, मुझे नहीं पता कि कैसे।

जवाबों:


266

जब आप अपने ऑब्जेक्ट को db में करते हैं, तो ऑब्जेक्ट को उसके ID फ़ील्ड में एक मान प्राप्त होता है।

इसलिए:

myObject.Field1 = "value";

// Db is the datacontext
db.MyObjects.InsertOnSubmit(myObject);
db.SubmitChanges();

// You can retrieve the id from the object
int id = myObject.ID;

2
हो सकता है कि आपको काम करने के लिए अपने क्षेत्र को "डेटाबेस जनरेट" और "इन्सर्ट ऑन अपडेट" सेट करना पड़े।
सैम

1
मैं इसे c # 4.0 में कैसे करूँ ?? कोई इंसोनसुबमिट या सबमिटचेंज नहीं है ??
बैट_प्रोग्रामर

1
@Confused प्रोग्रामर - यह एक ही है, लेकिन Context.Collection.Add () और SaveChanges () के साथ
naspinski

व्यवहार DB विशिष्ट हो सकता है। SQLite का उपयोग करते समय इसका परिणाम यह नहीं हुआ कि आईडी आबाद है।
डेनवर

मैंने पहले भी इसका उपयोग किया है, लेकिन इस कार्य को एक बहु-विषयक तालिकाओं पर कैसे बनाया जाए? क्या मुझे मुख्य तालिकाओं को बचाने के लिए पहले दोनों से आईडी प्राप्त करना होगा और फिर दोनों आईडी को रिश्ते की मेज पर सहेजना होगा?
साइबरएनजा

15

उत्पन्न आईडी डालते समय सहेजे जा रहे ऑब्जेक्ट के उदाहरण में सहेजा गया है (नीचे देखें):

protected void btnInsertProductCategory_Click(object sender, EventArgs e)
{
  ProductCategory productCategory = new ProductCategory();
  productCategory.Name = Sample Category”;
  productCategory.ModifiedDate = DateTime.Now;
  productCategory.rowguid = Guid.NewGuid();
  int id = InsertProductCategory(productCategory);
  lblResult.Text = id.ToString();
}

//Insert a new product category and return the generated ID (identity value)
private int InsertProductCategory(ProductCategory productCategory)
{
  ctx.ProductCategories.InsertOnSubmit(productCategory);
  ctx.SubmitChanges();
  return productCategory.ProductCategoryID;
}

संदर्भ: http://blog.jemm.net/articles/dat डेटाबेस / how-to-common-data-patterns-with-linq-to-sql/#4


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.