修改后的数据不会首先保存到实体框架数据库中的数据库

时间:2012-08-18 09:30:40

标签: asp.net-mvc-3 entity-framework-4

我正在编写用于更改密码的代码,但我不知道数据未更新到数据库的原因。我已经构建了自定义成员资格表和成员资格Provider类。这里名为IVRControlPanelEntities的enitiy是从实体框架生成的。我有以下功能来更改密码。

 public bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            IVRControlPanelMembershipProvider memberservice = new IVRControlPanelMembershipProvider();
            if (!memberservice.ValidateUser(username, oldPassword) || string.IsNullOrEmpty(newPassword.Trim()))
            {
                return false;
            }
            else
            {
                using (IVRControlPanelEntities db = new IVRControlPanelEntities())
                {
                    User user = GetUser(username);
                   // string hash = FormsAuthentication.HashPasswordForStoringInConfigFile(newPassword.Trim(), "md5");
                    string PasswordSalt = CreateSalt();
                    user.PasswordSalt = PasswordSalt;
                    user.Password = CreatePasswordHash(newPassword, PasswordSalt);
                    db.SaveChanges();


                }
               return true;
            }

        }

问题: 我尝试更改密码,一切正常,但新密码的数据没有更新到表。我也搜索了原因并使用以下代码: 1。

db.Entry(user).State = EntityState.Modified;

2

db.Users.Attach(user);
                 db.ApplyCurrentValues("Users", user);

以上都不起作用,也使用 TryUpdateModel()功能,但它没有检测到。

可能是由于对象的状态未定义,我该如何解决这个问题

1 个答案:

答案 0 :(得分:1)

如果GetUser方法使用不同的上下文,则不会更新数据。

试试这个:

User user = db.Users.FirstOrDefault(x=>x.UserName == username);
               // string hash = FormsAuthentication.HashPasswordForStoringInConfigFile(newPassword.Trim(), "md5");
                string PasswordSalt = CreateSalt();
                user.PasswordSalt = PasswordSalt;
                user.Password = CreatePasswordHash(newPassword, PasswordSalt);
                db.SaveChanges();