[英]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();
如果使用的是SaveChanges
的Async
版本,則應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.