使用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();
}

没有生成错误,但它不起作用(实体未更新)。

有人能告诉我我做错了什么吗?提前感谢。

使用textbox.text值更新实体框架

我的猜测是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();

如果您使用的是SaveChangesAsync版本,则应使用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();
}

正如其他人提到的,您必须awaitasync操作才能完成。