3 votes

SaveChanges() n'enregistre pas les données

Je suis assez novice en matière de MVC, alors soyez patient. Voici le code de mon action dans mon contrôleur dans un projet MVC sur lequel je travaille :

[HttpPost]
public ActionResult Create(User usr , string submitBtn, FormCollection form, int id)
{
    var db = new UsrSqlEntities();

    foreach (string fm in form)
    {
        if (fm.Contains("PayMonthOne"))
            usr.fName = Int32.Parse(form[fm]);

    }

    db.SaveChanges();
}

J'ai débogué ceci dans VS2010 et chaque étape passe sans erreur, c'est-à-dire que 'User' existe dans mon Entity Framework, mon 'form' contient une valeur qui passe à 'fName'. Cependant, l'exécution de SQlProfiler dans SSMS 2008 ne montre aucune activité (et évidemment aucun enregistrement dans ma base de données). Mon cadre d'entité est modelé sur cette base de données car, lorsque je fais une mise à jour d'une entité, les changements dans la base de données se reflètent dans l'EF.

Je ne sais pas pourquoi SaveChanges() ne fonctionne pas. Quelqu'un peut-il m'aider ?

4voto

Stephen King Points 816

Si vous mettez à jour l'entité, vous devrez connecter l'objet usr au contexte db et le marquer comme modifié.

db.Attach(usr);
db.Context.Entry(usr).State = EntityState.Modified;

S'il est neuf, vous devrez l'ajouter via :

db.Add(usr);

Ensuite, appelez votre

db.SaveChanges()

1voto

Robert McKee Points 4957

Je vous recommande les éléments suivants :

   var db=new UsrSqlEntities(); /* Module Level declaration */

   [HttpPost]
   public ActionResult Create(User usr)
   {
       db.Users.Add(usr); /* Add usr object to Users DbSet */

       db.SaveChanges(); /* Save all changes to the database */
   }

Cela suppose que vous créez un nouvel utilisateur, que Users est votre DbSet pour les objets User, et que votre objet User a une propriété "PayMonthOne" de type int ou int ?

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