我有一张这样的表:
我想为所有用户更新Seasonal_Voucher列
喜欢:UPDATE Users SET Seasonal_Voucher = 'Something'
我尝试了这个,但它无法工作:
using (DataClassesDataContext context = new DataClassesDataContext())
{
Users use = context.Users;
{
use.Seasonal_Voucher =DropDownList1.SelectedItem.ToString();
};
context.Refresh(0);
context.SubmitChanges();
}
答案 0 :(得分:3)
正如萨米在评论中所说,“它不会起作用”太宽泛了。但是,这是对代码的基本修改:(因为你也标记了linq,我假设你熟悉lambda语法)
using (DataClassesDataContext context = new DataClassesDataContext())
{
foreach (var use in context.Users)
{
use.Seasonal_Voucher = DropDownList1.SelectedItem.ToString();
};
//context.Refresh(0);
//context.SubmitChanges();
context.SaveChanges();
}
我意识到(正如Rob提到的那样)将整个表加载到内存中进行更新是不明智的。因此,您可以简单地尝试ExecuteSqlCommand
方法(因为看起来您仍在使用实体框架)。 MSDN:Database.ExecuteSqlCommand Method
对批量更新很有用。
string sqlQuery = "UPDATE Users SET Seasonal_Voucher = '" + DropDownList1.SelectedItem.ToString() + "'";
using (DataClassesDataContext context = new DataClassesDataContext())
{
context.Database.ExecuteSqlCommand(sqlQuery);
}
答案 1 :(得分:1)
或者参考how to update the multiple rows at a time using linq to sql? 下面的代码也是如此。但是正如Keyur所提到的,整个表将被加载以进行更新操作,这将是性能瓶颈。
using (DataClassesDataContext context = new DataClassesDataContext())
{
var users= context.Users.ToList();
users.ForEach(user=>user.Seasonal_Voucher=DropDownList1.SelectedItem.ToString());
context.SaveChanges();
}
或
using (DataClassesDataContext context = new DataClassesDataContext())
{
context.Users.ToList().ForEach(user=>user.Seasonal_Voucher=DropDownList1.SelectedItem.ToString());
context.SaveChanges();
}