J'ai un problème avec Entity Framework en ASP.NET. Je veux obtenir la valeur Id chaque fois que j'ajoute un objet à la base de données. Comment puis-je le faire ?
Selon Entity Framework la solution est :
using (var context = new EntityContext())
{
var customer = new Customer()
{
Name = "John"
};
context.Customers.Add(customer);
context.SaveChanges();
int id = customer.CustomerID;
}
Cela ne permet pas d'obtenir l'identité de la table de la base de données, mais l'ID attribué à l'entité. Si nous supprimons un enregistrement de la table, l'identité de la graine ne correspondra pas à l'ID de l'entité.
2 votes
Si vous n'avez besoin que de l'identifiant pour l'utiliser dans une relation de clé étrangère, vous pouvez envisager de simplement définir la propriété de navigation de votre entité dépendante sur l'entité précédemment ajoutée. De cette façon, vous n'avez pas à vous soucier d'appeler
SaveChanges
tout de suite, juste pour avoir l'identité. Autres lectures aquí .0 votes
Pour Entity Framework Core 3.0, ajoutez le paramètre acceptAllChangesOnSuccess comme true : await _context.SaveChangesAsync(true) ;