Bisakah saya mengembalikan bidang 'id' setelah menyisipkan LINQ?


182

Ketika saya memasukkan objek ke DB dengan Linq-to-SQL, bisakah saya mendapatkan id yang baru saja saya masukkan tanpa membuat panggilan db? Saya berasumsi ini cukup mudah, saya hanya tidak tahu caranya.

Jawaban:


266

Setelah Anda memasukkan objek Anda ke db objek menerima nilai di bidang ID-nya.

Begitu:

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
Mungkin Anda harus mengatur bidang Anda ke "database yang dihasilkan" dan "pembaruan saat disisipkan" agar ini berfungsi.
— Sam

1
bagaimana saya melakukan ini di c # 4.0 ?? tidak ada insertonsubmit atau submitchang ??
— Bat_Programmer

1
@Confused Programmer - itu sama, tetapi dengan Context.Collection.Add () dan SaveChanges ()
— naspinski

Perilaku mungkin spesifik DB. Saat menggunakan SQLite, ini tidak menghasilkan ID yang sedang diisi.
— denver

Saya sudah pernah menggunakan ini sebelumnya, tetapi bagaimana cara membuat ini bekerja di tabel multi-hubungan? Apakah saya harus menyimpan tabel utama terlebih dahulu untuk mendapatkan ID dari keduanya dan kemudian menyimpan kedua id ke tabel hubungan?
— CyberNinja

15

Saat memasukkan ID yang dihasilkan disimpan ke dalam instance objek yang disimpan (lihat di bawah):

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

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


2

Coba ini:

MyContext Context = new MyContext(); 
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.