LINQ 삽입 후 'id'필드를 반환 할 수 있습니까?


182

Linq-to-SQL을 사용하여 DB에 객체를 입력하면 다른 DB 호출을하지 않고도 방금 삽입 한 ID를 얻을 수 있습니까? 나는 이것이 매우 쉽다고 가정하고, 나는 단지 방법을 모른다.

답변:


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
이 작업을 수행하려면 필드를 "데이터베이스 생성"및 "삽입시 업데이트"로 설정해야합니다.
Sam

1
C # 4.0에서 어떻게합니까? insertonsubmit 또는 submitchanges가 없습니다 ??
Bat_Programmer

1
@Confused Programmer-동일하지만 Context.Collection.Add () 및 SaveChanges () 사용
naspinski

동작은 DB에 따라 다를 수 있습니다. SQLite를 사용할 때 ID가 채워지지 않았습니다.
denver

나는 이것을 전에 사용했지만 어떻게 multirelationship 테이블 에서이 작업을 수행합니까? 기본 테이블을 먼저 저장하여 둘 다에서 ID를 가져온 다음 두 ID를 관계 테이블에 저장해야합니까?
사이버 닌자

15

생성 된 ID를 삽입하면 저장중인 객체의 인스턴스에 저장됩니다 (아래 참조).

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/databases/how-to-common-data-patterns-with-linq-to-sql/#4


2

이 시도:

MyContext Context = new MyContext(); 
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.