Entity Framework et Delete
Pour faire suite à mon précédent article sur l’update avec Entity Framework, voici une autre une idée qui a la peau dure : “pour supprimer des données avec EF, il faudrait systématiquement aller chercher en base l’entité avec toutes ses propriétés”.
Même si cela à longtemps été le cas, ceci est faux aujourd’hui. Avec EF, on peut effectuer une suppression en un seul DELETE.
Ceci peut se faire en quelques étapes clés :
1. Instancier un objet avec les valeurs voulues. Seul impératif: utiliser la clé primaire de l’enregistrement à supprimer (logique).
// Instanciation de l'entité à supprimer
Customer entity = new Customer
{
Id = 10// ma clé primaire
};
2. Attacher l’entité au contexte de donnée.
// Attacher l'entité au context
_datacontext.Customers.Attach(entity);
3. Expliciter le fait que l’entité doit être supprimée.
// Recupération de l'entry et la marquer pour suppression
var entry = _datacontext.Entry(entity);
entry.State = System.Data.Entity.EntityState.Deleted;
5. Lancer l’enregistrement des modification, donc l’exeution du DELETE.
// Enregister les modifications
Boolean result = _datacontext.SaveChanges() > 0;
Et pour ceux qui voudraient avoir une idée de ce que cela peut donner dans une méthode complette :
public Boolean DeletCustomer(Int32 id)
{
// Instanciation de l'entité à supprimer
Customer entity = new Customer
{
Id = id,
};
// Attacher l'entité au context
_datacontext.Customers.Attach(entity);
// Recupération de l'entry et la marquer pour suppression
var entry = _datacontext.Entry(entity);
entry.State = System.Data.Entity.EntityState.Deleted;
// Enregistrement
return _datacontext.SaveChanges() > 0;
}