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 ?
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 ?
Je voulais juste vous faire part des trois méthodes avec lesquelles j'ai rebondi.
Méthode 1 :
var record = ctx.Records.FirstOrDefault();
ctx.Records.Remove(record);
ctx.SaveChanges();
Méthode 2 :
var record = ctx.Records.FirstOfDefault();
ctx.Entry(record).State = EntityState.Deleted;
ctx.SaveChanges();
ctx.Entry(record).State = EntityState.Detached;
L'une des raisons pour lesquelles je préfère opter pour Méthode 2 c'est parce que dans le cas d'un réglage de EF ou EFCore sur QueryTrackingBehavior.NoTracking
c'est plus sûr de le faire.
Ensuite, il y a Méthode 3 :
var record = ctx.Records.FirstOrDefault();
var entry = ctx.Entry(record);
record.DeletedOn = DateTimeOffset.Now;
entry.State = EntityState.Modified;
ctx.SaveChanges();
entry.State = EntityState.Detached;
Cette méthode utilise une approche de suppression douce en fixant la valeur de l'enregistrement. DeletedOn
tout en étant capable de conserver l'enregistrement pour une utilisation future, quelle qu'elle soit. En gros, le mettre dans la corbeille .
En outre, en ce qui concerne Méthode 3 au lieu de faire en sorte que l'enregistrement entier soit modifié :
entry.State = EntityState.Modified;
Vous pouvez aussi simplement définir uniquement la colonne DeletedOn
tel que modifié :
entry.Property(x => x.DeletedOn).IsModified = true;
Avec Entity Framework 6, vous pouvez utiliser Remove
. C'est aussi une bonne tactique à utiliser. using
pour être sûr que votre connexion est fermée.
using (var context = new EmployDbContext())
{
Employ emp = context.Employ.Where(x => x.Id == id).Single<Employ>();
context.Employ.Remove(emp);
context.SaveChanges();
}
[HttpPost]
public JsonResult DeleteCotnact(int id)
{
using (MycasedbEntities dbde = new MycasedbEntities())
{
Contact rowcontact = (from c in dbde.Contact
where c.Id == id
select c).FirstOrDefault();
dbde.Contact.Remove(rowcontact);
dbde.SaveChanges();
return Json(id);
}
}
Que pensez-vous de cela, simple ou pas, vous pouvez aussi essayer ceci :
var productrow = cnn.Product.Find(id);
cnn.Product.Remove(productrow);
cnn.SaveChanges();
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.