231 votes

Supprimer un seul enregistrement d'Entity Framework ?

J'ai une table SQL Server dans Entity Framework nommée employ avec une seule colonne clé nommée ID .

Comment supprimer un seul enregistrement de la table en utilisant Entity Framework ?

418voto

mt_serg Points 1190

Il n'est pas nécessaire d'interroger l'objet au préalable, vous pouvez l'attacher au contexte par son id. Comme ceci :

var employer = new Employ { Id = 1 };
ctx.Employ.Attach(employer);
ctx.Employ.Remove(employer);
ctx.SaveChanges();

Vous pouvez également définir l'état de l'entrée jointe comme étant supprimée :

var employer = new Employ { Id = 1 };
ctx.Entry(employer).State = EntityState.Deleted;
ctx.SaveChanges();

105voto

Mansfield Points 3731

Vous pouvez utiliser SingleOrDefault pour obtenir un seul objet correspondant à vos critères, puis le passer à l'option Remove de votre table EF.

var itemToRemove = Context.Employ.SingleOrDefault(x => x.id == 1); //returns a single item.

if (itemToRemove != null) {
    Context.Employ.Remove(itemToRemove);
    Context.SaveChanges();
}

14voto

Alex G Points 416
  var stud = (from s1 in entities.Students
            where s1.ID== student.ID
            select s1).SingleOrDefault();

  //Delete it from memory
  entities.DeleteObject(stud);
  //Save to database
  entities.SaveChanges();

8voto

Sam Leach Points 5358
Employer employer = context.Employers.First(x => x.EmployerId == 1);

context.Customers.DeleteObject(employer);
context.SaveChanges();

8voto

baqer_naqvi Points 337

J'utilise le cadre d'entités avec LINQ. Le code suivant m'a été utile ;

1- Pour les enregistrements multiples

 using (var dbContext = new Chat_ServerEntities())
 {
     var allRec= dbContext.myEntities;
     dbContext.myEntities.RemoveRange(allRec);
     dbContext.SaveChanges();
 }

2- Pour un enregistrement unique

 using (var dbContext = new Chat_ServerEntities())
 {
     var singleRec = dbContext.ChatUserConnections.FirstOrDefault( x => x.ID ==1);// object your want to delete
     dbContext.ChatUserConnections.Remove(singleRec);
     dbContext.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