159 votes

Comment supprimer un objet par id avec le framework d'entité

Il me semble que je dois récupérer un objet avant de le supprimer avec un framework d'entité comme ci-dessous

var customer = context.Customers.First(c => c.Id == 1);

context.DeleteObject(customer);

context.Savechanges();

Donc j'ai besoin d'aller dans la base de données deux fois. Y a-t-il un moyen plus facile ?

157voto

dwkd Points 2280

Dans le cadre d'entité 6, l'action de suppression est Remove. Voici un exemple

Customer customer = new Customer () { Id = id };
context.Customers.Attach(customer);
context.Customers.Remove(customer);
context.SaveChanges();

63voto

Identique à @Nix avec un petit changement à taper fortement :

Si vous ne voulez pas la rechercher, créez simplement une entité, puis supprimez-la.

Customer customer = new Customer () { Id = id };
context.Customers.Attach(customer);
context.Customers.DeleteObject(customer);
context.SaveChanges();

39voto

acarlon Points 4636

Une question similaire ici.

Avec Entity Framework, il y a EntityFramework-Plus (bibliothèque d'extensions).
Disponible sur NuGet. Ensuite, vous pouvez écrire quelque chose comme :

// DELETE all users which has been inactive for 2 years
ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))
     .Delete();

Il est également utile pour les suppressions en vrac.

23voto

Nix Points 22944

Si vous ne voulez pas la rechercher, créez simplement une entité, puis supprimez-la.

Customer customer  = new Customer() {  Id = 1   } ; 
context.AttachTo("Customers", customer);
context.DeleteObject(customer);
context.Savechanges();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X