web-dev-qa-db-fra.com

LINQ to Entities comment mettre à jour un enregistrement

D'accord, je suis donc nouveau pour EF et LINQ. J'ai compris comment INSÉRER et SUPPRIMER, mais pour une raison quelconque, MISE À JOUR semble échapper à ma compréhension.

Voici un exemple de mon code:

EntityDB dataBase = new EntityDB();
Customer c = new Customer
{
     Name = "Test",
     Gender = "Male
};
dataBase.Customers.AddObject(c);
dataBase.SaveChanges();

Ce qui précède crée et ajoute un enregistrement très bien.

Customer c = (from x in dataBase.Customers
             where x.Name == "Test"
             selext x).First();
dataBase.Customers.DeleteObject(c);
dataBase.SaveChanges();

Ce qui précède supprime effectivement l'enregistrement spécifié.

Maintenant, comment puis-je mettre à jour? Je n'arrive pas à trouver une méthode "UpdateObject()" sur la collection d'entités.

39
Chev

Modifiez simplement l'une des entités renvoyées:

Customer c = (from x in dataBase.Customers
             where x.Name == "Test"
             select x).First();
c.Name = "New Name";
dataBase.SaveChanges();

Remarque, vous ne pouvez mettre à jour qu'une entité (quelque chose qui étend EntityObject, pas quelque chose que vous avez projeté en utilisant quelque chose comme select new CustomObject{Name = x.Name}

82
tster

// pour mise à jour

(from x in dataBase.Customers
         where x.Name == "Test"
         select x).ToList().ForEach(xx => xx.Name="New Name");

// pour supprimer

dataBase.Customers.RemoveAll(x=>x.Name=="Name");
7
Zohaib Iqbal

Ils suivent tous les deux vos modifications dans la collection, appelez simplement la méthode SaveChanges () qui devrait mettre à jour la base de données.

3
Anthony