Tôi có thể trả lại trường 'id' sau khi chèn LINQ không?


182

Khi tôi nhập một đối tượng vào DB bằng Linq-to-SQL, tôi có thể lấy id mà tôi vừa chèn mà không thực hiện cuộc gọi db khác không? Tôi cho rằng điều này khá dễ, tôi không biết làm thế nào.

Câu trả lời:


266

Sau khi bạn cam kết đối tượng của mình vào db, đối tượng sẽ nhận được một giá trị trong trường ID của nó.

Vì thế:

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
Có thể bạn sẽ cần đặt trường của mình thành "cơ sở dữ liệu được tạo" và "cập nhật khi chèn" để làm việc này.
Sam

1
Làm thế nào để tôi làm điều này trong c # 4.0 ?? không có insertonsubmit hay subitchanges ??
Bat_Programmer

1
Lập trình viên @Confuse - tương tự, nhưng với Context.Collection.Add () và SaveChanges ()
naspinski

Hành vi có thể là DB cụ thể. Khi sử dụng SQLite, điều này không dẫn đến việc ID được điền.
chối

Tôi đã sử dụng cái này trước đây, nhưng làm thế nào để nó hoạt động trên một bảng đa chủng tộc? Tôi có phải lưu các bảng chính trước tiên lấy ID từ cả hai và sau đó lưu cả hai id vào bảng quan hệ không?
CyberNinja

15

Khi chèn ID được tạo sẽ được lưu vào thể hiện của đối tượng được lưu (xem bên dưới):

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

tham khảo: http://blog.jemm.net/articles/database/how-to-common-data-potypes-with-linq-to-sql/#4


2

Thử cái này:

MyContext Context = new MyContext(); 
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.