我試圖使用實體更新表。新數據進入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.";
}
}
編輯:該mUsuario.BuscarUsuario方法用於從數據庫中Usuario類型的對象返回它的所有使用這就是在當前會話的用戶身份名稱加載的值。
解決:大衛的答案是正確的,我所做的就是將buscarUsuario
方法放入dbcontext中。這是爲BuscarUsuario
代碼:使用它
public USUARIOS BuscarUsuario(int id)
{
try
{
db = new BdContext();
USUARIOS usuario = db.USUARIOS.Find(id);
db.Dispose();
return usuario;
}
catch(Exception ex)
{
throw ex;
}
}
所以,而不只是封裝我用.Find
方法帶給我的「usuario」中的DbContext的對象:
USUARIOS usuario = dbcontext.USUARIOS.Find(int.Parse(HttpContext.User.Identity.Name));
你能解釋一下'USUARIOS usuario = mUsuario ....'這行嗎? – Redouane
@Redouane剛剛更新了這個問題。 – William
下面@David的答案是我想寫的。看起來你需要在'mUsuario'使用的DbContext實例上調用SaveChanges()。換句話說,我的意思是在修改數據後,必須使用用於檢索數據的相同上下文實例來調用SaveChanges()。 – Redouane