EF4.1 - Pruebe actualizar muchas filas
-
26-10-2019 - |
Pregunta
Necesito actualizar todas las filas de mi tabla cuando el usuario visita una página específica. Todos los campos deben actualizarse a "Falso". Probé este código:
var history = db.UserHistory.Where(m => m.UserID == id);
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();
Pero me arroja un mensaje de error. ¿Alguien podría ayudarme con esta actualización?
Solución
Al principio no pude obtener que Linq no actualizó muchas filas a la vez, tengo que hacer un bucle y actualizar cada una. Mi código final es este:
var history = db.UserHistory.Where(m => m.UserID == id).ToList();
TryUpdateModel(history);
history.ForEach(m => m.IsActive = false);
db.SaveChanges();
Otros consejos
Como parece que solo está seleccionando una sola entrada, probablemente desea agregar .FirstorDefault () a su primera línea, que debería aparecer con IntelliSense.
var history = db.UserHistory.Where(m => m.UserID == id).FirstOrDefault();
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();
En este momento estás devolviendo un IQueryable en lugar de una sola entrada. FirstorDefault devolverá una sola entidad de usuarios, por lo que al menos pasaría un solo elemento a TryUtDateModel.