在asp.net mvc中一次编辑多个记录
本文关键字:一次 编辑 记录 net asp mvc | 更新日期: 2023-09-27 17:50:14
我正在尝试使用asp.net mvc 4
&EF6
,我想同时更新多个记录。但只有一个数据在更新& &;其余的还是一样的。这是我的代码,
var resetInfo = db.myInfoes.Where(p => p.id == ClId).FirstOrDefault();
if (resetInfo != null)
{
resetInfo.id = 0;
resetInfo.name = "N/A";
resetInfo.phone = "N/A"
db.SaveChanges();
TempData["success"] = "Information Updated Successfully!";
return RedirectToAction("Index");
}
else
{
TempData["fail"] = "Error! Information Update Failed!";
return RedirectToAction("Index");
}
我在这里做错了什么吗?我如何更新记录对应的id给出了所有一次?急需这种帮助。谢谢。
不要使用FirstOrDefault
…它将只检索一条记录。
您可以检查您的查询是否返回任何数据(而不是检查FirstOrDefault
是否返回null)。
var resetInfos = db.myInfoes.Where(p => p.id == ClId);
if (!resetInfos.Any()) {
//Message could be "No data to update for this client" it's not really an Update fail
TempData["fail"] = "Error! Information Update Failed!";
//get out of here if you have no data
return RedirectToAction("Index");
}
foreach (var resetInfo in resetInfos) {
resetInfo.id = 0;//is it possible to have multiple resetInfo with id 0?
resetInfo.name = "N/A";
resetInfo.phone = "N/A"
}
TempData["success"] = "Information Updated Successfully!";
db.SaveChanges();
return RedirectToAction("Index");
您将需要一个集合,使用以下代码:
var resetInfo = db.myInfoes.Where(p => p.id == ClId).ToList();
if (resetInfo != null)
{
resetInfo.ForEach(a =>
{
a.id = 0;
a.name = "N/A";
a.phone = "N/A";
});
db.SaveChanges();
TempData["success"] = "Information Updated Successfully!";
return RedirectToAction("Index");
}
else
{
TempData["fail"] = "Error! Information Update Failed!";
return RedirectToAction("Index");
}
你正在调用FirstOrDefault()在你的Where调用,这将只请求第一个记录(或你的记录类的默认实例,如果没有返回)。
你可能想这样做:
var records = db.myInfoes.Where(p => p.id == ClId);
if (records.Any())
{
foreach(var resetInfo in records)
{
resetInfo.id = 0;
resetInfo.name = "N/A";
resetInfo.phone = "N/A"
}
db.SaveChanges();
TempData["success"] = "Information Updated Successfully!";
return RedirectToAction("Index");
}
else
{
TempData["fail"] = "Error! Information Update Failed!";
return RedirectToAction("Index");
}