当用户访问一个特定页面时,我需要更新表的所有行。所有字段都需要更新为“ false”。我尝试了此代码:

var history = db.UserHistory.Where(m => m.UserID == id);
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();

但这给我带来了一个错误消息。有人可以帮助我进行此更新吗?

有帮助吗?

解决方案

起初我无法获得Linq没有一次更新许多行,我必须进行循环并更新每个行。我的最终代码是:

var history = db.UserHistory.Where(m => m.UserID == id).ToList();
TryUpdateModel(history);
history.ForEach(m => m.IsActive = false);
db.SaveChanges();

其他提示

由于您似乎只是在选择一个可能想要将.firstordefault()附加到您的第一行中的单个条目,这应该以Intellisense出现。

var history = db.UserHistory.Where(m => m.UserID == id).FirstOrDefault();
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();

现在,您要返回一部可乐,而不是单个条目。 FirstOrdEfault将返回一个单个用户史实体,因此至少您将单个项目传递给TryUpdateModel。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top