当用户访问一个特定页面时,我需要更新表格的所有行。 所有字段都需要更新为“false”。 我试过这段代码:
var history = db.UserHistory.Where(m => m.UserID == id);
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();
但它会抛出一条错误信息。 任何人都可以帮我这个更新吗?
答案 0 :(得分:1)
我一开始并不知道LINQ没有一次更新很多行,我必须做一个循环并更新每一行。我的最终代码就是这个:
var history = db.UserHistory.Where(m => m.UserID == id).ToList();
TryUpdateModel(history);
history.ForEach(m => m.IsActive = false);
db.SaveChanges();
答案 1 :(得分:0)
因为您似乎只是选择了一个条目,所以您可能希望将.FirstOrDefault()附加到您的第一行,该行应该显示为intellisense。
var history = db.UserHistory.Where(m => m.UserID == id).FirstOrDefault();
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();
现在你正在返回一个IQueryable而不是一个条目。 FirstOrDefault将返回一个UserHistory实体,因此至少你要将一个项目传递给TryUpdateModel。