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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top