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.