it-swarm.com.de

Kann ich das 'id'-Feld nach einer LINQ-Einfügung zurückgeben?

Wenn ich mit Linq-to-SQL ein Objekt in die Datenbank eingebe, kann ich die ID erhalten, die ich gerade eingefügt habe, ohne einen anderen DB-Aufruf auszuführen? Ich gehe davon aus, dass dies ziemlich einfach ist, ich weiß nur nicht wie. 

175
naspinski

Nachdem Sie Ihr Objekt in die Datenbank festgeschrieben haben, erhält das Objekt einen Wert in seinem ID-Feld.

So:

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

Beim Einfügen wird die generierte ID in der Instanz des zu speichernden Objekts gespeichert (siehe unten):

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

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

15
Jason Stevenson

Versuche dies:

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