EF4.1 - попробуй обновить много строк - PullRequest
0 голосов
/ 30 ноября 2011

Мне нужно обновить все строки моей таблицы, когда пользователь заходит на одну конкретную страницу. Все поля должны быть обновлены до «ложь». Я попробовал этот код:

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

Но это выдает мне сообщение об ошибке. Кто-нибудь может помочь мне с этим обновлением?

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Сначала я не мог понять, что LINQ не обновляет много строк одновременно, я должен сделать цикл и обновить каждую.Вот мой окончательный код:

var history = db.UserHistory.Where(m => m.UserID == id).ToList();
TryUpdateModel(history);
history.ForEach(m => m.IsActive = false);
db.SaveChanges();
0 голосов
/ 01 декабря 2011

Поскольку создается впечатление, что вы просто выбираете одну запись, которую, вероятно, хотите добавить в первую строку .FirstOrDefault (), которая должна отображаться с intellisense.

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

Сейчас вы возвращаете IQueryable, а не одну запись. FirstOrDefault вернет одну сущность UserHistory, поэтому, по крайней мере, вы будете передавать один элемент в TryUpdateModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...