Domanda

Ho bisogno di aggiornare tutte le righe del mio tavolo quando utente visita una pagina specifica. Tutti i campi devono essere aggiornati a "false". Ho provato questo codice:

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

Ma mi genera un messaggio di errore. Qualcuno mi potrebbe aiutare con questo aggiornamento?

È stato utile?

Soluzione

Non ho potuto ottenere in un primo momento che LINQ didn `t aggiornamento molte righe in una volta, devo fare un ciclo e aggiornare ogni uno. Il mio codice finale è questa:

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

Altri suggerimenti

Dal momento che sembra che tu sei solo la selezione di un singolo voce che si desidera probabilmente vuole accodare .FirstOrDefault () per la prima linea, che dovrebbe apparire con IntelliSense.

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

In questo momento si sta tornando un IQueryable invece di una singola voce. FirstOrDefault restituirà una singola entità UserHistory, così almeno si sarebbe passando un singolo elemento per TryUpdateModel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top