エンティティを使用してテーブルを更新しようとしています。新しいデータはusu_login
とusu_senha
になっていますが、コードがSaveChanges();
ビットになると実際には機能しません。何か不足していますか?なぜ更新は行われないのですか?私は新しいデータを使って新しいユーザーを挿入しようとしましたが、実際にはうまくいきました。ちょうど更新が私に苦労しています。エンティティでテーブルを更新できません
[Authorize]
[HttpPost]
public string AtualizarCredenciais(string usu_senha, string usu_login)
{
try
{
//Busca o usuário com o ID de sessão.
USUARIOS usuario = mUsuario.BuscarUsuario(int.Parse(HttpContext.User.Identity.Name));
//Cria uma instância de contexto do banco.
BdContext dbcontext = new BdContext();
//Mudança de senha e usuário pro novo usuário.
usuario.USU_LOGIN = usu_login;
usuario.USU_SENHA = usu_senha;
dbcontext.SaveChanges();
return "Credenciais atualizadas.";
}
catch (Exception e)
{
Debug.WriteLine(e.ToString());
return "Erro na atualização de credenciais.";
}
}
EDIT:mUsuario.BuscarUsuarioメソッドは、データベースからのセッションで、現在のユーザーのID名を使用してロードされたすべてのことの価値観を持つUsuario型のオブジェクトを返すために使用されます。
解決済み:デビッドの答えは正しいですが、私が行ったことはbuscarUsuario
メソッドをdbcontextの内部に持っていくことでした。
public USUARIOS BuscarUsuario(int id)
{
try
{
db = new BdContext();
USUARIOS usuario = db.USUARIOS.Find(id);
db.Dispose();
return usuario;
}
catch(Exception ex)
{
throw ex;
}
}
だからではなく、私は私のdbcontextの「usuario」をもたらすために.Find
メソッドを使用するオブジェクトをカプセル化するためにそれを使用する:これはBuscarUsuario
のコードだった
USUARIOS usuario = dbcontext.USUARIOS.Find(int.Parse(HttpContext.User.Identity.Name));
「USUARIOS usuario = mUsuario ....」という行は何を説明できますか? – Redouane
@Redouaneが質問を更新しました。 – William
以下の@Davidの回答は、私が書こうと思っていたものです。 'mUsuario'で使用されているDbContextインスタンスでSaveChanges()を呼び出す必要があるようです。言い換えれば、データを変更した後にSaveChanges()を呼び出すためには、取得したデータと同じコンテキストインスタンスを使用しなければならないということです。 – Redouane