簡體   English   中英

使用textbox.text值更新實體框架

[英]Entity framework update with textbox.text value

我需要有關更新實體框架模型的幫助。 我想在實體中找到某些字段,並使用文本框的值更新其值。

我嘗試了這個:

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

沒有構建錯誤,但是它不起作用(實體未更新)。

有人可以告訴我我在做什么錯嗎? 預先感謝。

您正在更改實體字段而不是實體,因此保存更改不會執行任何操作。

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(); 代替。

我的猜測是EF不知道如何保存此更新。

您的“ var”只是返回一個字符串,而不是數據庫記錄,因此,當您更改它的值時,它不再鏈接到db記錄。

這是您的代碼應如下所示:

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 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操作完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM