【发布时间】:2021-03-11 01:27:08
【问题描述】:
我正在为我的 Xamarin Android 应用程序创建一个 API,并且我已经创建了这个方法来更新数据库中的密码:
[HttpPut]
[ActionName("updatepassword")]
public HttpResponseMessage updatepassword(string password,string email)
{
user_table user = dbe.user_table
.Where(x => x.email_address == email)
.FirstOrDefault();
user.password_hash = password.GetHashCode();
var response = dbe.SaveChanges();
string finalresponse = "password updated successfully" + response;
return Request.CreateResponse(HttpStatusCode.OK, finalresponse );
}
但是当我使用邮递员对其进行测试时,它显示有 0 个实体受到了影响。
我也尝试过使用
dbe.user_table.AddorUpdate()
但它也不起作用,请帮助我。
这是我的邮递员查询
http://192.168.10.9:8044/api/account/updatepassword/?password=asad1234&email=asadregards@gmail.com
我已经在 IIS 服务器上发布了我的 API,这就是我使用 IP 地址而不是 localhost 的原因。
【问题讨论】:
-
@marc_s 你应该在编辑我的问题后回答我的问题
-
可能实体的状态没有改变。你试过用EntityStates吗?
-
如果有明显的答案,我会发布的。唯一明显的是,在调用
.FirstOrDefault()之后,您应该始终检查NULL,然后再进行任何进一步操作:if (user != null) { ...... }- 否则您可能会尝试设置password_hash并结束加上NullReferenceException -
EF 说实体在您调用
SaveChanges之前处于哪个状态?检查dbe.ChangeTracker.Entries() -
@AsadUllah 不要指望奇迹,至少不会来自我们,当发布没有明显错误并且您没有提供任何细节的代码时,例如您在调试时看到的内容.
标签: c# entity-framework asp.net-web-api put