it-swarm-eu.dev

Mohu vrátit pole 'id' po vložení LINQ?

Když zadám objekt do DB s Linq-to-SQL, mohu dostat id, který jsem právě vložil, aniž bych provedl další volání db? Předpokládám, že je to velmi snadné, prostě nevím jak. 

175
naspinski

Poté, co objekt zadáte do db, objekt obdrží hodnotu v poli ID.

Tak:

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;
259
Germstorm

Při vložení generovaného ID se uloží do instance uloženého objektu (viz níže):

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

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

15
Jason Stevenson

Zkuste to:

MyContext Context = new MyContext(); 
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;
0
Khalid Salameh