使用textbox.text值更新实体框架
本文关键字:实体 框架 更新 textbox text 使用 | 更新日期: 2023-09-27 17:57:26
我需要帮助更新我的实体框架模型。我想在实体中找到某个字段,并用文本框的值更新它的值。
我试过这个:
var context1= new Entities1();
using (context1)
{
var chechUser = (from c in context1.Users
where c.Username == LabelUsername.Text
select c.Name).Single();
chechUser = TextBoxNewName.Text;
context1.SaveChangesAsync();
}
没有生成错误,但它不起作用(实体未更新)。
有人能告诉我我做错了什么吗?提前感谢。
我的猜测是EF不知道如何保存此更新。
您的"var"只是返回一个字符串,而不是数据库记录,所以当您更改它的值时,它不再链接到数据库记录。
以下是您的代码应该是什么样子:
var context1= new Entities1();
using (context1)
{
var chechUser = (from c in context1.Users
where c.Username == LabelUsername.Text
select c).FirstOrDefault();
if (chechUser == null)
throw new Exception("Couldn't find a Users record with a Username value of: " + LabelUsername.Text);
chechUser.Name = TextBoxNewName.Text;
context1.SaveChangesAsync();
}
希望这能有所帮助。
您更改的是实体字段,而不是实体,因此保存更改不会有任何作用。
var chechUser = (from c in context1.Users
where c.Username == LabelUsername.Text).Single();
现在您在chechUser
中有了用户实体
chechUser.Name = TextBoxNewName.Text;
await context1.SaveChangesAsync();
如果您使用的是SaveChanges
的Async
版本,则应使用await
或调用context1.SaveChanges();
。
它不是那样工作的。您不能只选择一个字段,更新它并将其发送回数据库进行保存。您必须选择一条记录,更改其属性,然后将更改保存回数据库。
var context1 = new Entities1();
using (context1)
{
var chechUser = (from c in context1.Users
where c.Username.ToLower() == LabelUsername.Text.Trim().ToLower()
select c).Single();
chechUser.Name = TextBoxNewName.Text;
await context1.SaveChangesAsync();
}
正如其他人提到的,您必须await
和async
操作才能完成。