Lorsque j'entre un objet dans la base de données avec Linq-to-SQL, puis-je obtenir l'ID que je viens d'insérer sans effectuer un autre appel à une base de données? Je suppose que c'est assez facile, je ne sais pas comment.
Une fois que vous avez validé votre objet dans la base de données, l'objet reçoit une valeur dans son champ ID.
Alors:
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;
Lors de l'insertion, l'ID généré est enregistré dans l'instance de l'objet en cours de sauvegarde (voir ci-dessous):
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;
}
référence: http://blog.jemm.net/articles/databases/how-to-common-data-patterns-with-linq-to-sql/#4
Essaye ça:
MyContext Context = new MyContext();
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;