EF4.1 - Try update many rows
-
26-10-2019 - |
Question
I need to update all rows of my table when user visits one specific page. All fields need to be updated to "false". I tried this code:
var history = db.UserHistory.Where(m => m.UserID == id);
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();
But it throws me an error message. Anyone could help me with this update?
Solution
I couldn't get at first that LINQ didn`t update many rows at once, I have to make a loop and update each one. My final code is this one:
var history = db.UserHistory.Where(m => m.UserID == id).ToList();
TryUpdateModel(history);
history.ForEach(m => m.IsActive = false);
db.SaveChanges();
OTHER TIPS
Since it seems like you're just selecting a single entry you want to probably want to append .FirstOrDefault() to your first line, which should appear with intellisense.
var history = db.UserHistory.Where(m => m.UserID == id).FirstOrDefault();
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();
Right now you're returning an IQueryable as opposed to a single entry. FirstOrDefault will return a single UserHistory entity, so at least you'd be passing a single item to TryUpdateModel.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow