LINQ eklemesinden sonra 'id' alanını döndürebilir miyim?


182

Linq-to-SQL ile DB içine bir nesne girdiğimde ben sadece başka bir db çağrı yapmadan eklediğim kimliği alabilir miyim? Bunun oldukça kolay olduğunu varsayıyorum, nasıl yapacağımı bilmiyorum.

Yanıtlar:


266

Nesnenizi db'ye verdikten sonra, nesne kendi kimlik alanında bir değer alır.

Yani:

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
Belki de bunun çalışması için alanınızı "veritabanı oluşturuldu" ve "eklentide güncelleme" olarak ayarlamanız gerekebilir.
— Sam

1
c # 4.0 bunu nasıl yaparım ?? inserttonsubmit veya changechanges yok ??
— Bat_Programmer

1
@Confused Programmer - aynı, ancak Context.Collection.Add () ve SaveChanges () ile
— naspinski

Davranış DB'ye özgü olabilir. SQLite kullanıldığında bu kimliğin doldurulmasına neden olmadı.
— denver

Bunu daha önce kullandım, ancak bu multirelationship masalarında nasıl çalışır? Önce ana tabloları her ikisinden de kimliği almak ve sonra her iki kimliği ilişki tablosuna kaydetmek zorunda mıyım?
— CyberNinja

15

Oluşturulan kimlik eklenirken kaydedilen nesnenin örneğine kaydedilir (aşağıya bakın):

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;
}

başvuru: http://blog.jemm.net/articles/databases/how-to-common-data-patterns-with-linq-to-sql/#4


2

Bunu dene:

MyContext Context = new MyContext(); 
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.