2011-02-08 3 views

Répondre

21

Le plus simple est:

(1) récupérer la ligne existante à l'aide pk.

(2) mettre à jour les propriétés.

(3) appelez SaveChanges() sur le contexte.

par exemple.

 var student = context.Students.Find(42); 

     student.Description = "updated"; 

     context.SaveChanges(); 
+1

C'est le moyen le plus facile, mais il fait une requête de plus à la base de données n'est-ce pas? Je veux dire qu'il doit faire le SELECT pour trouver l'entité que vous voulez mettre à jour et ensuite le mettre à jour. Mais en général, vous devriez être capable de le faire sans cette requête avec UPDATE. Y a-t-il un tel moyen? – Zoka

17

est ici d'une manière qui a fonctionné pour moi sans avoir à faire une première requête:

context.Students.Attach(student); 
context.Entry(student).State = EntityState.Modified; 
context.SaveChanges(); 
+0

L'autre réponse a fonctionné pour moi jusqu'à présent, mais n'a pas sur mon premier projet de code premier. Alors, savez-vous pourquoi votre réponse a fonctionné? – MVCDS

+0

Si vous n'avez pas émis de requête de recherche comme dans la réponse de Paul, d'où vient l'objet étudiant? – usefulBee

+0

Désolé, je n'ai pas utilisé EF depuis plus de 2 ans. Je ne peux pas commenter ma réponse car je ne suis plus familier avec le cadre. – leojh

Questions connexes