1

パスワードを変更するためのコードを書いていましたが、データがデータベースに更新されない理由がわかりません。カスタムメンバーシップテーブルとメンバーシッププロバイダークラスを作成しました。ここで、IVRControlPanelEntitiesという名前のエンティティはエンティティフレームワークから生成されます。パスワードを変更する機能は以下のとおりです。

 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.2。

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

上記のいずれも機能しておらず、 TryUpdateModel()関数も使用していますが、を検出していません。

オブジェクトの状態が定義されていないことが原因である可能性があります。この問題を解決するにはどうすればよいですか。

4

1 に答える 1

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();
于 2012-08-18T13:23:06.940 に答える