Skip to main content

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;
}
Jérémy Jeanson

Comments

You have to be logged in to comment this post.

Cookies Cookie Policy

This website uses cookies and similar technologies to allow us to promote our services and enhance your browsing experience. If you continue to use this website you agree to our use of cookies.